Что я не так делаю?паскальпоиск двух максимальных чисел
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.

21 Апр 2020 в 19:48
246 +1
2
Ответы
1

Исправленный код:

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.

18 Апр 2024 в 13:30
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир