Напишите программу, которая выводит на экран строку матрицы, сумма значений элементов которой наибольшая (Pascal)
Ответы
Ответ дал:
0
Const
N = 3;
M = 4;
Var
A:array[1..N,1..M] of integer;
i,j,iMax:integer;
S,Max:real;
Begin
Randomize;
WriteLn('Исходная матрица:');
For i:= 1 to N do
Begin
For j:= 1 to M do
Begin
A[i,j]:=random(21)-10;
Write(A[i,j]:3,' ');
End;
WriteLn
End;
Max:=0;
iMax:=1;
For j:= 1 to M do
Max:=Max+A[1,j];
For i:= 2 to N do
Begin
For j:= 1 to M do
S:=S+A[i,j];
if S>Max then
Begin
Max:=S;
iMax:=i;
End;
End;
Write('Искомая строка:');
For j:= 1 to M do
Write(' ',A[iMax,j])
End.
Пример работы программы:
Исходная матрица:
8 0 -7 -1
-2 -10 -4 -10
5 -1 10 -6
Искомая строка: 8 0 -7 -1
N = 3;
M = 4;
Var
A:array[1..N,1..M] of integer;
i,j,iMax:integer;
S,Max:real;
Begin
Randomize;
WriteLn('Исходная матрица:');
For i:= 1 to N do
Begin
For j:= 1 to M do
Begin
A[i,j]:=random(21)-10;
Write(A[i,j]:3,' ');
End;
WriteLn
End;
Max:=0;
iMax:=1;
For j:= 1 to M do
Max:=Max+A[1,j];
For i:= 2 to N do
Begin
For j:= 1 to M do
S:=S+A[i,j];
if S>Max then
Begin
Max:=S;
iMax:=i;
End;
End;
Write('Искомая строка:');
For j:= 1 to M do
Write(' ',A[iMax,j])
End.
Пример работы программы:
Исходная матрица:
8 0 -7 -1
-2 -10 -4 -10
5 -1 10 -6
Искомая строка: 8 0 -7 -1
Ответ дал:
0
1. Современное решение
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
Writeln('Строка с наибольшей суммой:');
a.Row(a.Rows.Select(r->r.Sum).ToArray.IndexMax).Println
end.
Пример
Количество строк в матрице: 6
Количество столбцов в матрице: 9
*** Исходная матрица [6,9] ***
54 -83 45 -44 -52 57 -90 -71 -70
8 99 -27 72 46 28 -18 36 48
-85 24 -57 -67 63 -69 52 44 -99
-34 -44 -1 45 48 63 68 48 98
27 84 15 70 37 -70 1 24 -60
-82 -63 6 -59 91 -64 84 65 66
------------------------------------
Строка с наибольшей суммой:
8 99 -27 72 46 28 -18 36 48
2. Школьное решение в стиле языка ТурбоПаскаль 1983г
const
nn=20;
var
i,j,n,m,k,s,max:integer;
a:array[1..nn,1..nn] of integer;
begin
Write('Количество строк в матрице: '); Read(n);
Write('Количество столбцов в матрице :'); Read(m);
Writeln('*** Исходная матрица [',n,',',m,'] ***');
Randomize;
max:=-100;
for i:=1 to n do begin
s:=0;
for j:=1 to m do begin
a[i,j]:=Random(199)-99;
Write(a[i,j]:4);
s:=s+a[i,j]
end;
Writeln;
if s>max then begin
max:=s; k:=i
end
end;
for i:=1 to 4*n do Write('-');
Writeln;
Writeln('Строка с наибольшей суммой:');
for j:=1 to m do Write(a[k,j],' ');
Writeln
end.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
Writeln('Строка с наибольшей суммой:');
a.Row(a.Rows.Select(r->r.Sum).ToArray.IndexMax).Println
end.
Пример
Количество строк в матрице: 6
Количество столбцов в матрице: 9
*** Исходная матрица [6,9] ***
54 -83 45 -44 -52 57 -90 -71 -70
8 99 -27 72 46 28 -18 36 48
-85 24 -57 -67 63 -69 52 44 -99
-34 -44 -1 45 48 63 68 48 98
27 84 15 70 37 -70 1 24 -60
-82 -63 6 -59 91 -64 84 65 66
------------------------------------
Строка с наибольшей суммой:
8 99 -27 72 46 28 -18 36 48
2. Школьное решение в стиле языка ТурбоПаскаль 1983г
const
nn=20;
var
i,j,n,m,k,s,max:integer;
a:array[1..nn,1..nn] of integer;
begin
Write('Количество строк в матрице: '); Read(n);
Write('Количество столбцов в матрице :'); Read(m);
Writeln('*** Исходная матрица [',n,',',m,'] ***');
Randomize;
max:=-100;
for i:=1 to n do begin
s:=0;
for j:=1 to m do begin
a[i,j]:=Random(199)-99;
Write(a[i,j]:4);
s:=s+a[i,j]
end;
Writeln;
if s>max then begin
max:=s; k:=i
end
end;
for i:=1 to 4*n do Write('-');
Writeln;
Writeln('Строка с наибольшей суммой:');
for j:=1 to m do Write(a[k,j],' ');
Writeln
end.
Вас заинтересует
1 год назад
1 год назад
8 лет назад
8 лет назад