var i,j,s,n,max:integer; a:array[1..5,1..5]of integer; begin for i:=1 to 5 do begin s:=0; for j:=1 to 5 do begin a[i,j]:=random(10); write(a[i,j],' '); s:=s+a[i,j]; end; if s>max then begin n:=i; max:=s; end; writeln; end; writeln; write('Строка ',n,': '); for j:=1 to 5 do write(a[n,j],' '); end.
Ошибки две: 1) Не забывайте обнулять переменную k. У вас она не обнулялась, и так как каждый раз прибавлялось что-то, то максимум достигался на последнем числе. 2) Нужно не количество, а сумма делителей, поэтому к k надо прибавлять не 1, а i.
Пример исправленной программы:
var max, i, j, k, a, b, z: integer;
begin max := 0; readln(a, b); for i := a to b do begin k := 0; for j := 1 to i do if (i mod j) = 0 then k := k + j; if k > max then begin max := k; z := i; end; end; writeln(z); end.
2. А вот так все еще учат в большинстве школ (стиль образца 70-80х годов века)
const n=16; var i,s:integer; a:array[1..n] of integer; begin Randomize; s:=0; for i:=1 to n do begin a[i]:=Random(101)-20; Write(a[i],' '); if i mod 2=0 then s:=s+a[i] end; Writeln; Writeln('S=',s) end.
i,j,s,n,max:integer;
a:array[1..5,1..5]of integer;
begin
for i:=1 to 5 do
begin
s:=0;
for j:=1 to 5 do
begin
a[i,j]:=random(10);
write(a[i,j],' ');
s:=s+a[i,j];
end;
if s>max then
begin
n:=i;
max:=s;
end;
writeln;
end;
writeln;
write('Строка ',n,': ');
for j:=1 to 5 do
write(a[n,j],' ');
end.