每行的最大值

时间:2014-11-08 09:22:45

标签: pascal freepascal pascalscript delphi turbo-pascal

我有一个问题要问你。我需要在每一行中写出最大元素。例如,我的表:

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;

请帮帮我 端。

1 个答案:

答案 0 :(得分:1)

只有三个小错误:

1)if (max<x[i,j])应该在第二个for循环之外,因为你想要每行初始化最大值一次。

2)writeln(max);应该在第二个for循环之外,你想每行只打印一次值。

3) read(x[i,j]);我建议你成为readln (x[i,j]),因为阅读时你只读了一个字符,读了你的红色字符,直到找到一个新的字符,这样就可以了输入超过两位数的数字。

这只对字符串有意义,您可以将readreadln与整数一起使用

另外,我建议你在写一个控制结构的同一行写一个关键字begin(for,while,if等),因为这样它更类似于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.