こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ベーシック、循環小数プログラミング

0 !q/pを少数点表示する
1 LET X=10
2 DIM a(1 TO 100),b(0 TO 100)
3 INPUT q,p
4 LET b(0)=q
5 LET k=1
6 DO
7 LET a(k)=INT(b(k-1)*X/p)
8 LET b(k)=MOD(b(k-1)*X,p)
9 LET j=0
10 DO UNTIL j=k-1 OR b(j)=b(k)
11 LET j=j+1
12 LOOP
13 IF b(j)=b(k) THEN EXIT DO
14 LET k=k+1
15 LOOP
16 ! 結果の表示
17 PRINT "0.";
18 FOR i=1 TO j
19 PRINT a(i);
20 NEXT i
21 PRINT "{";
22 FOR i=j+1 TO k
23 PRINT a(i);
24 NEXT i
25 PRINT "}"
26 END

上のプログラミングですが、
10~16、21~26がはっきりと理解できません。
6のdoは15のloopとつながるんですよね?

q=3,p=7で考えてみたのですが、
8,9行目で
a(1)=4 b(0)=3 b(1)=2
a(2)=2 b(2)=6
a(3)=8 b(3)=4
a(4)=5 b(4)=5
a(5)=7 b(5)=1
a(6)=1 b(6)=3
となり、b(0)=b(6)より、循環小数ということだと考えました。
このb(0)=b(6)の比較は10行目、13行目のどちらでしょうか?

また、結果の表示で、17行~20行で、
0.a1a2a3・・と表示することはわかりましたが、循環小数のさいの{}の入れ方(21行~25行)が理解できていません。

私の理解や記入がわかりにくいかもしれませんが、
どなたか解説していただけないでしょうか。
よろしくお願いいたします。

投稿日時 - 2008-07-08 14:23:49

QNo.4160560

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

DO と IF について調べればどっちが何をやっているか理解できるんじゃない?

21~ は単に出力してるだけ
前述と同じくFORについて調べたら判る筈だよ。

投稿日時 - 2008-07-08 15:27:07

お礼

返事が遅くなってしまって申し訳ありません。

b(0)=b(6)の比較は10行目、13行目は、b(0)=b(6)となったので、loopから抜けるということでよかったでしょうか。

21~は相変わらず理解できていません。
私の考えだと、
結果は、
0.428571{428571}になってしまいます。
しかし、実際にこのプログラムをすると、
0.{428571}になるのですが。

22行目 FOR i=j+1 は
いわばa(7)のことではないのでしょうか?

やはりあまりにも理解できていない状況でしょうか・・・

投稿日時 - 2008-07-12 16:15:37

あなたにオススメの質問