Поделитесь своими знаниями, ответьте на вопрос:
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победителем считается тот спортсмен, у которого сумма результатов по всем броскам максимальна. Если перенумеровать спортсменов числами от 0 до n-1, а попытки каждого из них – от 0 до m-1, то на вход программа получает массив A[n][m], состоящий из неотрицательных целых чисел. Программа должна определить максимальную сумму чисел в одной строке и вывести на экран эту сумму и номер строки, для которой достигается эта сумма.
const
n=30;
var
a:array[1..30] of integer;
s:longint;
i:integer;
begin
{ формируем массив }
Randomize;
Writeln('Элементы массива:');
for i:=1 to n do
begin a[i]:=Random(51)-25; Write(a[i]:4) end;
Writeln;
{ собственно, алгоритм }
s:=a[1]*a[2]; i:=3;
while i<=n-1 do
begin s:=s+a[i]*a[i+1]; i:=i+2 end;
Writeln('Сумма пар произведений равна ',s)
end.
Тестовое решение:
Элементы массива:
1 10 -9 -12 -2 20 21 14 5 19 21 -14 -10 -17 5 -9 -8 17 18 11 -21 -3 -15 -10 -15 -16 -15 2 3 21
Сумма пар произведений равна 846
Второй алгоритм
const
n=30;
var
a:array[1..30] of integer;
smax,imax:longint;
i:integer;
begin
{ формируем массив }
Randomize;
Writeln('Элементы массива:');
for i:=1 to n do
begin a[i]:=Random(51)-25; Write(a[i]:4) end;
Writeln;
{ собственно, алгоритм }
smax:=a[1]+a[2]; imax:=1;
for i:=2 to n-1 do
if smax<a[i]+a[i+1] then
begin smax:=a[i]+a[i+1]; imax:=i end;
Writeln('Номер первого из пары элементов с максимальной суммой: ',imax)
end.
Тестовое решение:
Элементы массива:
23 13 -11 -1 -18 20 -23 1 -21 -10 7 15 -2 24 -18 -22 -13 12 -16 22 19 -14 -14 -14 19 15 8 -15 -19 -22
Номер первого из пары элементов с максимальной суммой: 20