擬似言語のある処理について
擬似言語についてわからないことがあります。
このプログラムはスタックを使って、実数値を10進数字に変換するプログラムです。
今回質問するのは、このプログラムの中でも数値を一桁ずつ10進数字に変換して、スタックに詰め込む部分です。
Fintは整数部分。Idxは変数。
IntはFの小数部をカットする。(つまり、整数部分だけにする処理です。)
Chr[]={0,1,2,3,4,5,6,7,8,9},T (Chrは数値に対応する文字列を格納したものです。)
Fint←Int(F)
繰り返し処理 Fint>0ならば
・Idx ← Fint - (Fint ÷ 10) × 10;Fintの最下位桁をIdxに取り出す。
・Push(Chr[Idx]);最下位桁Idxに対応する数字をスタックにプッシュする
・Fint←Fint÷10;次の桁を最下位の桁にシフトする。
繰り返しで上へ
上記の「Fintの最下位桁をIdxに取り出す」という処理は
たとえば、12,345という数字があったならば、12の最下位桁2を取り出すということなのだと思いますが、式に当てはめて計算すると
12-(12÷10)×10となりIdxに0という数字が格納されます。
その後に、Chrで0という数値を拾ってきて文字列0が格納されることになります。
しかし、問題文を見ると12,345という数字を変換すると12,345という文字列になっておりなぜ0?になってしまうのという話になります。
私の解釈は間違いだらけだと思いますが訂正していただけると
大変うれしいです。
お礼
hiro_knigh 様 ご返信ありがとうございます。 アドバイス頂いたやり方でトライしてみましたところできました!!