- ベストアンサー
Pascalでの選択ソート
program sort(input, output); const numofdata =100 ; var d: array [1..numofdata] of integer; i,j,k: integer; tmp: integer; begin for i:=1 to numofdata do begin read(d[i]); end; for i:=1 to numofdata-1 do begin j:=i; for k:=i+1 to numofdata do begin if d[j]>d[k] then j:=k; end; tmp:=d[j]; d[j]:=d[i]; d[i]:=tmp; end; for i:=1 to numofdata do begin writeln(d[i]) end end. このプログラムを、データ数(1個から最大10000個まで)を最初に入力できるように変更するには、どうすればよいのでしょうか。教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
本質的には「numofdata を定数ではなく変数とする」で終了ですが, そうしちゃうと配列を定義するのが面倒なので「配列を定義するための定数」と「プログラム中で本当のデータ数を表すための変数」をわけるのが簡単かな.
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
Pascalは良く覚えていないので、標準的な仕様のものだとダメかもしれませんが、 GNU Pascalでは program moge; var size : integer; procedure sub(n : integer); var ary : array [0..n] of integer; begin writeln('ary size = ', n); end; begin size := 1000; sub(size); end. のように、配列を宣言するときの上下限指定に 変数が使えるたので質問者さんの環境で 同じことができればこれを活かせばよいのでは。 #1のTacosanさんと同じ子と書いているような気がするけどいいや(笑)
お礼
何とか解決できました。
補足
すいません,どうすれば良いのか分からないです…