• ベストアンサー

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個まで)を最初に入力できるように変更するには、どうすればよいのでしょうか。教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

本質的には「numofdata を定数ではなく変数とする」で終了ですが, そうしちゃうと配列を定義するのが面倒なので「配列を定義するための定数」と「プログラム中で本当のデータ数を表すための変数」をわけるのが簡単かな.

kachimoai
質問者

お礼

何とか解決できました。

kachimoai
質問者

補足

すいません,どうすれば良いのか分からないです…

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

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さんと同じ子と書いているような気がするけどいいや(笑)

関連するQ&A

専門家に質問してみよう