• 締切済み

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 という数字が出てきます。 どうしてこのような結果が出るのか 解説をお願いします。

みんなの回答

  • 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 が正解です。

iroh
質問者

お礼

ほとんど理解不能でした。勉強します。 わざわざありがとうございました。

  • kbannai
  • ベストアンサー率32% (88/268)
回答No.2

150行目のk=1ではなく、k=i+1にしてみたら?

iroh
質問者

お礼

1行ごとに意味がつかめませんので勉強します。

  • gonic
  • ベストアンサー率30% (18/59)
回答No.1

昇順のソートですか? ループのたびに150行でK=1としているせいでしょう。

iroh
質問者

お礼

すみません。私の力ではわかりませんでした。

関連するQ&A