HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0707
SqOccntの英語(記号)版8解決


SqOc

リンク

2015/7/7(Tue) 18:05:51|NO.69984

cntは1,2,3,4....
って返してくるのですが、
a,b,c,d,e,f,g.......
って返してくれる方法って何か単純なのでありますか?
あったら教えてください!!
おねがいします!!



この記事に返信する


prince

リンク

2015/7/7(Tue) 18:33:52|NO.69985

cntが25を超えると正しく動作しません。

//ここから本体 #module "mod_cnt" #define global _cnt __cnt@mod_cnt() #defcfunc local __cnt a = "" poke a, 0, 'a' + cnt return a #global //ここまで //サンプル repeat color 255, 255, 255 : boxf pos 0, 0 : color mes cnt mes _cnt wait 10 loop



kanamaru

リンク

2015/7/7(Tue) 19:11:29|NO.69986

26文字しかアルファベットはないので25を超えるとダメですね。
いっそのことアルファベットのみ使った26進法を定義するというのはどうでしょう?
27はA0にするということです。



kanamaru

リンク

2015/7/7(Tue) 19:12:50|NO.69987

間違えた。
アルファベットのみ使うんだから
27はAAかな?



kanamaru

リンク

2015/7/7(Tue) 20:25:39|NO.69988

さらに違った。
27はABだった。



osakana

リンク

2015/7/8(Wed) 01:26:04|NO.69989

こんな感じで a 〜 z を循環させておけば
難しいこと考えなくて良さそうですけどどうでしょう。

#define cnt_ab strf("%%c", 'a' + cnt \ 26) ; strf は遅いかも font MSGOTHIC, 17 ; 文字の大きさ調節 repeat 28 mes cnt_ab ; アルファベット loop



玄冬

リンク

2015/7/8(Wed) 01:36:12|NO.69990

こう?

#module #defcfunc ALPABET int p_N a_LIST = "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" A = p_N repeat -1 i++ if A < 26 : break A /= 26 loop A = p_N s = "" repeat i i-- B = 1 repeat i B *= 26 loop C = A / B if i > 0 : c-- s += a_LIST(C) A \= B loop return s #global repeat color 255, 255, 255 : boxf pos 0, 0 : color mes cnt mes ALPABET(cnt) wait 500 loop



Humi/BassClef

リンク

2015/7/10(Fri) 14:53:23|NO.70016

?解決してないのですかな?
一応昔自分が作ったn進数変換モジュールを載せときます。
n進数変換なので桁上がりもできてます

#module // n進数交互変換 #deffunc setBaseTable str wordtable_ table_ = wordtable_ return #defcfunc nBase int prm_, int base_, int negative_ dst_ = prm_ :rem_ = 0 sdim buf_, 128 repeat if (dst_ == 0) :break rem_ = dst_ \ base_ if (rem_ >= 128) :break buf_ = strmid(table_, abs(rem_) ,1) + buf_ dst_ = dst_ / base_ loop if buf_ == "" :return strmid(table_, 0, 1) if negative_ :if prm_ < 0 :return strmid(table_, strlen(table_)-1, 1)+buf_ return buf_ #defcfunc nBase_ str string, int base, int negative_ buf = string len = strlen(buf) if negative_ { if peek(buf, 0) == peek(table_, strlen(table_)-1) { m = -1.0 len-- buf = strmid(buf, 1, len) }else :m = 1.0 } dst = 0.0 i = len-1 repeat len n = instr(table_, 0, strmid(buf, cnt, 1)) if n == -1 :dst = -1 :break dst += n*powf(base, i) i-- loop if negative_ :return dst*m return dst #global setBaseTable "abcdefghijklmnopqrstuvwxyz" font msgothic, 10 repeat 36 mes ""+cnt+":"+nBase(cnt, 26) loop
a の次桁が ba なのは a が0扱いなので 0,1,2,3... の桁上がりが 1 なのと一緒です
setBaseTableの文字列を変えると好きな文字で数字を扱えます。
一応交互変換できます。暗号化にも使えますかな。



SqOc

リンク

2015/7/11(Sat) 00:58:38|NO.70031

皆さんこんなにたくさんの方法ありがとうございました!!

きちんとプログラム内に組み込むこともできました!!



ONION software Copyright 1997-2021(c) All rights reserved.