最大値と最小値の求めかたを教えてください KAZINO 2004/07/16 10:14:24 ├KAZINOさんのプログラムでいろいろわからな... 青木太一 2004/07/16 12:39:41 ├こんな感じです。 山中和義 2004/07/16 15:31:10 └青木様、山中様お返事ありがとうございまし... KAZINO 2004/07/17 04:53:41
最大値と最小値の求めかたを教えてください KAZINO 2004/07/16 10:14:24 ツリーへ
最大値と最小値の求めかたを教えてください |
返事を書く |
KAZINO 2004/07/16 10:14:24 | |
データの中から、最大値と最小値を検索する、プログラムを作っているのですが、どうしても上手く出来ません。 どなたかアドバイスしていただけるとうれしいです 10 N=5 20 DIM A$(N),B(N),C(n) 30 FOR K=1 TO N 40 READ A$(k),B(k),C(k) 50 IF C(k)=9999 THEN GOTO 70 60 NEXT K 70 M=M-1:MAX=:MIN=9999 80 FOR K=1 TO M-1 90 IF C(K)<MIN THEN MIN=C(k) 100 IF B(k)>MAX THEN MAX=B(K) 110 NEXT K 120 PRINT "体重が最も軽い人は";C(k);"kgで";A$(k);"です" 130 PRINT "身長が最も高い人は";B(k);"cmで";A$(k);"です" 140 DATA "一郎",170,60 150 DATA "二郎",165,55 160 DATA "三郎",160,50 170 DATA "四郎",155,45 180 DATA "五郎",150,40 190 END Aが名前、Bが身長、Cが体重です。 これで実行すると、2番目のデータが結果表示されてしまいます。 よろしくお願いします。 |
├KAZINOさんのプログラムでいろいろわからな... 青木太一 2004/07/16 12:39:41 ツリーへ
Re: 最大値と最小値の求めかたを教えてください |
返事を書く |
青木太一 2004/07/16 12:39:41 | |
KAZINOさんのプログラムでいろいろわからないところがあります。 ・「M」は何を表しているのでしょう? また「M」の初期値が「0」なので70行目で「-1」になり、 80〜110行のforループが一度も実行されません ・50行目の「IF C(k)=9999 THEN GOTO 70」は何をしたいのでしょう? おそらくforループ実行中や、実行後のkの値についてなんらかの誤解をしているものと推測します。 KAZINOさんの役に立たなかったらごめんなさい。 参考に最大値を求めるプログラムを書きます。 randomize LET n=5 dim a(1 to n) !乱数で初期化 for i=1 to n LET a(i)=rnd print "a(";i;")=";a(i) next i !とりあえず最大値はa(1)としておく LET max_a=a(1) !最大値 LET max_i=1 !最大値の配列の添え字 !最大値を探す for i=2 to n if max_a<a(i) then LET max_a=a(i) LET max_i=i end if next i print "最大値はa(";max_i;")=";a(max_i) END |
├こんな感じです。 山中和義 2004/07/16 15:31:10 ツリーへ
Re: 最大値と最小値の求めかたを教えてください |
返事を書く |
山中和義 2004/07/16 15:31:10 | |
こんな感じです。 変数Kが最大、最小と2つ使われています。(混同) 別々に記録しておく必要があると思います。 なお、元のプログラムを十進BASICで置き換えています。 10 LET N=5 !人数を設定する 20 DIM A$(N),B(N),C(N) 30 FOR K=1 TO N !人数分データを読込む 40 READ A$(K),B(K),C(K) 60 NEXT K 70 LET MAX=B(1) !最初の人を最大、最小と仮定する LET K2=1 LET MIN=C(1) LET K1=1 80 FOR K=2 TO N !2番目以降の人に対して確認する 90 IF C(K)<MIN THEN LET MIN=C(K) LET K1=K END IF 100 IF B(K)>MAX THEN LET MAX=B(K) LET K2=K END IF 110 NEXT K 120 PRINT "体重が最も軽い人は";C(K1);"kgで";A$(K1);"です" 130 PRINT "身長が最も高い人は";B(K2);"cmで";A$(K2);"です" 140 DATA "一郎",170,60 150 DATA "二郎",165,55 160 DATA "三郎",160,50 170 DATA "四郎",155,45 180 DATA "五郎",150,40 190 END |
└青木様、山中様お返事ありがとうございまし... KAZINO 2004/07/17 04:53:41 ツリーへ
Re: 最大値と最小値の求めかたを教えてください |
返事を書く |
KAZINO 2004/07/17 04:53:41 | |
青木様、山中様 お返事ありがとうございました 教科書やBASICの本を見ながら、作ったのですが Mの意味やループのさせ方が理解できていなかったようです。 提示していただいたプログラムを参考にさせていただいて 理解できるように、頑張ります。 御忙しい中、アドバイスありがとうございました |