アプリ版:「スタンプのみでお礼する」機能のリリースについて

擬似言語についてわからないことがあります。
このプログラムはスタックを使って、実数値を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?になってしまうのという話になります。

私の解釈は間違いだらけだと思いますが訂正していただけると
大変うれしいです。

A 回答 (3件)

>12-(12÷10)×10となりIdxに0という数字が格納されます。


正しくは
12-(int(12÷10))×10
ではないでしょうか。
    • good
    • 0
この回答へのお礼

なるほど。
(Fint ÷ 10) という処理は、int(Fint÷10)というように
解釈できるのですね。ありがとうございました。

お礼日時:2009/05/30 17:00

#2です


訂正
>F ← int( F )
F ← int( F / 10 )
    • good
    • 0
この回答へのお礼

私などのために時間を割いていただき誠にありがとう
ございました。

お礼日時:2009/05/30 17:34

素人考えですが…




Idx ← ( F / 10 - int( F / 10 ) ) * 10

F ← int( F )


…こういう事ですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!