- 締切済み
basic プログラムです。
100 DIM A(5) 110 FOR J=1 TO 5 120 READ A(J) 130 NEXT J 140 FOR I=1 TO 4 150 LET K=1 160 FOR J=I+1 TO 5 170 IF A(J)<A(K) THEN LET k=J 180 NEXT J 190 LET T=A(I) 200 LET A(I)=A(K) 210 LET A(K)=T 220 FOR J=1 TO 5 230 PRINT A(J); 240 NEXT J 250 PRINT 260 NEXT I 270 DATA 5,3,7,2,1, 280 END を実行すると 13725 31725 31275 71235 という数字が出てきます。 どうしてこのような結果が出るのか 解説をお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- age_momo
- ベストアンサー率52% (327/622)
回答No.3
どう見ても数学カテじゃないですね。また、何がしたくてこのプログラムを書いたかも抜けてます。なぜ、こうなるかと聞かれても『当たり前』としか答えられません。 と、ひとしきり文句を書いた上で回答します。 昇順ソートをしたかったとして、160から180で最小値の添数を見つけていますね。最初のループでは1が最小ですからk=5になり、次に置き換えがあって表示させると13725になってます。次もK=1から見つけていくとKは絶えずA(x)=1のxを求めてしまいます。最初に最小値を見つけてA(1)に入れたのですから、次はA(2)からA(5)の中で最小値を見つければいいのです。よって150行は LET K=I が正解です。
お礼
ほとんど理解不能でした。勉強します。 わざわざありがとうございました。