Задание предлагает несовершенный алгоритм. При поиске максимума нет никакого смысла переприсваивать Amax. Образец того, как в школах сначала дают неоптимальные алгоритмы, а потом на ЕГЭ за неоптимальность снимают .
Предлагаемый вариант программы лишен указанного выше недостатка.
const nn=100; { максимальное количество элементов в массиве }
var a:array[1..nn] of integer; i,n,Amax,Aindex:integer;
begin Randomize; Write('n='); Read(n); for i:=1 to n do begin a[i]:=Random(101)-50; Write(a[i],' ') end; Writeln; Aindex:=1; for i:=2 to n do if a[i]>a[Aindex] then Aindex:=i; Amax:=a[Aindex]; Writeln('Максимальный элемент номер ',Aindex,' равен ',Amax) end.
Пример n=15 24 14 44 4 41 -50 14 3 7 38 21 -39 31 -2 12 Максимальный элемент номер 3 равен 44
Потому что соединение не идеально, оно прерывается, некоторые данные по пути теряются. Допустим, я хочу передать файл по интернету. Если файл небольшой, то велика вероятность, что он не пострадает. В противном случае можно потратить много времени на передачу части файла, после чего данные передадутся с ошибкой, которую мы обнаружим только после передачи всего файла. Передавая информацию пакетами же можно этого избежать, так как любая потеря данных будет сразу видна по плохому пакету. После этого можно эту ошибку сразу и обработать и, допустим запросить повтор предыдущего пакета или попытаться починить пакет, прибывший с ошибкой.
Предлагаемый вариант программы лишен указанного выше недостатка.
const
nn=100; { максимальное количество элементов в массиве }
var
a:array[1..nn] of integer;
i,n,Amax,Aindex:integer;
begin
Randomize;
Write('n='); Read(n);
for i:=1 to n do begin
a[i]:=Random(101)-50;
Write(a[i],' ')
end;
Writeln;
Aindex:=1;
for i:=2 to n do
if a[i]>a[Aindex] then Aindex:=i;
Amax:=a[Aindex];
Writeln('Максимальный элемент номер ',Aindex,' равен ',Amax)
end.
Пример
n=15
24 14 44 4 41 -50 14 3 7 38 21 -39 31 -2 12
Максимальный элемент номер 3 равен 44