2015年10月11日日曜日

Q:このプログラムで表示が出ません


Question:
以下を実行すると(21,0)の位置に0だけが表示されます。
int x
for x=0 to 20://63
    locate(x,0):print (x mod 10);
next

Answer:

おかしいような気がするかもしれませんが、これは正常です。
X-BASICで正の数値の表示は
 スペース+数値+スペース
となります。(x mode 10)は1桁数字になるので、

 _0_
  _1_
    _2_
という具合に表示されていくので、最終的に残るのはlocate(20,0)からに_0_と表示される分だけです。

これをちゃんと各桁に1桁数字を表示したいなら、
    print str$(x mod 10);
とします。
この動作はX-BASIC/68でも同じです。

ただし、V3.1までのX-BASIC for iOSではバグのためこれでも表示が出ません。
困ったもんだ。V3.4で修正されます。