Представь себе одну колею. Посредине отходит тупик на 11 вагонов. По краям два поезда. 1) Левый проезжает вперед и задком заходит в тупик, оставляя там 11 вагонов. Потом выезжает и возвращается на место - влево. 2) Правый подъезжает к вагонам и прицепляет к себе спереди паровоза (у паровоза "зад - перед" одно и то же) и оттаскивает на место вправо. 3) Левый опять протягивает вперед и задком полностью заезжает в тупик. 4) Правый двигается по колее, занимая место слева. Он теперь левый. 5) Левый выезжает и занимает место справа. Он теперь правый. 6) Левый протягивает назад и заталкивает в тупик 11 вагонов не своих. Выезжает обратно. 7) Правый подцепляет свои вагоны и каждый едет дальше!
Все это справедливо, если в тупик можно заехать с правой стороны. Если с левой - картина меняется на зеркальную.
Задание предлагает несовершенный алгоритм. При поиске максимума нет никакого смысла переприсваивать 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
1) Левый проезжает вперед и задком заходит в тупик, оставляя там 11 вагонов. Потом выезжает и возвращается на место - влево.
2) Правый подъезжает к вагонам и прицепляет к себе спереди паровоза (у паровоза "зад - перед" одно и то же) и оттаскивает на место вправо.
3) Левый опять протягивает вперед и задком полностью заезжает в тупик.
4) Правый двигается по колее, занимая место слева. Он теперь левый.
5) Левый выезжает и занимает место справа. Он теперь правый.
6) Левый протягивает назад и заталкивает в тупик 11 вагонов не своих. Выезжает обратно.
7) Правый подцепляет свои вагоны и каждый едет дальше!
Все это справедливо, если в тупик можно заехать с правой стороны. Если с левой - картина меняется на зеркальную.
Предлагаемый вариант программы лишен указанного выше недостатка.
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