Что я не так делаю?
паскаль
поиск двух максимальных чисел
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.
Аноним:
Дай условие задачи, я гляну что не так
Ответы
Ответ дал:
1
Нашел. у тебя ma изначально 1, тоесть условие ma<>max почти всегда не будет иметь значения
const N = 5;
var
a : array [1..5]of integer;
iMax,max, iiMa,ma ,i : integer;
begin
for i:= 1 to N do
read (a[i]);
write (' числа ', a );
iMax := a[1];
max:=1;
for i := 1 to N do
if a[i] > iMax then
begin
iMax := a[i];
max := i;
end;
write (' первое максимальное значение ', iMax,' ',max );
iiMa := a[1];
ma := 1;
if iiMa=iMax then begin iiMa:=a[2];
ma:=2;
end;
for i := 1 to N do
if (iiMa < a[i])and (i <> max) then
begin
iiMa := a[i];
ma := i
end;
write (' второе максимальное значение ', iiMa,' ', ma);
end.
ma:=2; для чего это?
Вас заинтересует
1 год назад
1 год назад
1 год назад
2 года назад
8 лет назад
8 лет назад