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

締切り済みの質問

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

投稿日時 - 2004-11-29 23:00:21

QNo.1105780

すぐに回答ほしいです

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

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

回答(3)

ANo.3

どう見ても数学カテじゃないですね。また、何がしたくてこのプログラムを書いたかも抜けてます。なぜ、こうなるかと聞かれても『当たり前』としか答えられません。
と、ひとしきり文句を書いた上で回答します。

昇順ソートをしたかったとして、160から180で最小値の添数を見つけていますね。最初のループでは1が最小ですからk=5になり、次に置き換えがあって表示させると13725になってます。次もK=1から見つけていくとKは絶えずA(x)=1のxを求めてしまいます。最初に最小値を見つけてA(1)に入れたのですから、次はA(2)からA(5)の中で最小値を見つければいいのです。よって150行は
LET K=I
が正解です。

投稿日時 - 2004-11-30 09:31:59

お礼

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

投稿日時 - 2004-12-28 10:21:17

ANo.2

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

投稿日時 - 2004-11-30 06:29:10

お礼

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

投稿日時 - 2004-12-28 10:22:32

ANo.1

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

投稿日時 - 2004-11-29 23:35:44

お礼

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

投稿日時 - 2004-12-28 10:23:18

あなたにオススメの質問