1

質問があります。各行に最大要素を記述する必要があります。たとえば、私のテーブル:

1 2 3 4
5 6 7 8
9 10 11 12

試した4,8,12を取得したいのですが、結果がありません:

Program Lab2;
type A=array[1..5,1..5] of integer;
var x:A;
i,j,s,max:integer;
Begin
 writeln('Write date:');
 for i:=1 to 5 do
  for j:=1 to 5 do
    read(x[i,j]);

 for i:=1 to 5 do
  for j:=1 to 5 do
  begin
   max:=x[i,1];
    if (max<x[i,j]) then max:=x[i,j];
   writeln(max);
  end;
 readln;

私が終わるのを手伝ってください。

4

1 に答える 1

1

3 つの小さな間違いがあります。

1)if (max<x[i,j])行ごとに 1 回だけ最大値を初期化するため、2 番目の for ループの外にある必要があります。

2) writeln(max);2 番目の for ループの外にある必要があります。1 行に 1 回だけ値を出力します。

3) read(x[i,j]);read では 1 文字しか読み取れませんが、 readlnreadln (x[i,j])では改行文字が見つかるまで赤い文字が読み取られ、2 桁以上の数字を入力できるようになるため、お勧めします。

これは文字列に対してのみ意味があります。readまたはreadln整数で使用できます

また、制御構造 (for、while、if など) を記述するのと同じ行にキーワードを記述することをお勧めします。beginこれは、最も一般的なコーディング スタイルの 1 つである C コーディング スタイルの規則により似ているからです。私は推測する。また、どの言語でも同様のコーディング スタイルを維持しようとする場合にも適しています。

したがって、コードは次のようになります。

Program Lab2;
const SIZE=3;
type A=array [1..SIZE,1..SIZE] of integer;
var x:A;
i,j,max:integer;
Begin
  writeln('Write date:');
  for i:=1 to SIZE do begin
    for j:=1 to SIZE do begin
      readln(x[i,j]);
    end;
  end;
  for i:=1 to SIZE do begin
    max:=x[i,1];
    for j:=1 to SIZE do begin
      if (max<x[i,j]) then begin
        max:=x[i,j];
      end;
    end;
    writeln('the max value of the row ',i ,' is ',max);
end;
 readln;
 readln;
end.
于 2014-11-08T10:26:29.573 に答える