電子書籍の厳選無料作品が豊富!

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

A 回答 (2件)

本質的には「numofdata を定数ではなく変数とする」で終了ですが, そうしちゃうと配列を定義するのが面倒なので「配列を定義す

るための定数」と「プログラム中で本当のデータ数を表すための変数」をわけるのが簡単かな.

この回答への補足

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

補足日時:2007/06/07 20:59
    • good
    • 0
この回答へのお礼

何とか解決できました。

お礼日時:2007/06/07 21:47

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!