Что я не так делаю?паскальпоиск двух максимальных чисел program ee; const N = 5; var a : array [1..5]of integer; iMax,max, iiMa,ma ,i : integer; begin for i:= 1 to N do begin read (a[i]); end; write (' числа ', a ); iMax := a[1];// присваиваем для начального сравнения for i := 1 to N do if a[i] > iMax then//сравниваем 5 чисел и берём наибольшее begin iMax := a[i];//число max := i;//на каком месте end; write (' первое максимальное значение ', iMax,' ',max ); iiMa := a[1];//присваиваем для начального сравнения ma := 1;// for i := 1 to N do// if (iiMa < a[i])and(ma < max)then// ищем второе наибольшее число begin iiMa := a[i];// ma := i// end; write (' второе максимальное значение ', iiMa,' ', ma); end.
program ee; const N = 5; var a : array [1..5] of integer; iMax, max, iiMax, max2, i : integer; begin for i := 1 to N do begin read(a[i]); end; iMax := a[1]; max := 1; for i := 2 to N do begin if a[i] > iMax then begin iMax := a[i]; max := i; end; end; write('Первое максимальное значение: ', iMax, ' на позиции ', max); iiMax := 0; max2 := 0; for i := 1 to N do begin if (a[i] > iiMax) and (i <> max) then begin iiMax := a[i]; max2 := i; end; end; write('Второе максимальное значение: ', iiMax, ' на позиции ', max2); end.
В этом исправленном коде были внесены следующие изменения:
В цикле сравнения наибольшего числа был добавлен проверка, что текущий индекс не равен индексу первого максимального числа.Переменные iiMax и max2 были правильно инициализированы перед циклом поиска второго наибольшего числа.Исправлены ошибки в условиях проверки наибольшего числа для второго максимального значения.Добавлены сообщения о позициях найденных максимальных значений.
Теперь код должен корректно находить два наибольших числа в массиве a.
Исправленный код:
program ee;const
N = 5;
var
a : array [1..5] of integer;
iMax, max, iiMax, max2, i : integer;
begin
for i := 1 to N do
begin
read(a[i]);
end;
iMax := a[1];
max := 1;
for i := 2 to N do
begin
if a[i] > iMax then
begin
iMax := a[i];
max := i;
end;
end;
write('Первое максимальное значение: ', iMax, ' на позиции ', max);
iiMax := 0;
max2 := 0;
for i := 1 to N do
begin
if (a[i] > iiMax) and (i <> max) then
begin
iiMax := a[i];
max2 := i;
end;
end;
write('Второе максимальное значение: ', iiMax, ' на позиции ', max2);
end.
В этом исправленном коде были внесены следующие изменения:
В цикле сравнения наибольшего числа был добавлен проверка, что текущий индекс не равен индексу первого максимального числа.Переменные iiMax и max2 были правильно инициализированы перед циклом поиска второго наибольшего числа.Исправлены ошибки в условиях проверки наибольшего числа для второго максимального значения.Добавлены сообщения о позициях найденных максимальных значений.Теперь код должен корректно находить два наибольших числа в массиве a.