informat писал(а):Есть ещё одна ошибка в этой программе. В условии не сказано, что числа будут положительные.
Значит возможен такой массив:
-8 -88 -888
Эта программа выдаст 0, которого не было вообще.
...
Тут уже дело не только в программе, а в условии задачи.
Наверно, вы правы. Я почему-то исключил такой вариант, подумал, что раз максимум - значит больше 0, а то что с минусом (даже если на 8 оканчивается) - отбрасываем.
Добавлено спустя 7 минут 5 секунд:Oleg_D писал(а):И еще лишний begin-end вот здесь:
- Код: Выделить всё
begin
max:=0;
for i:=1 to n do
if (a[i] mod 10 = 8) and (a[i]>max) then max:=a[i]
end;
Вероятно, Вы хотели вставить этот блок внутрь цикла for, - тогда бы программа верно работала. Но промахнулись
А вот здесь, не совсем мне понятно про какой for идет речь 1 или 2-й? Т.е. вы предлагаете вообще убрать bedin ... end в цитате выше?
И еще вопросик, как теперь сделать проверку еще и на значения оканчивающиеся на 8 с минусом?
Сделать подпрограмму положительное/отрицательное, потом сравнить отрицательные и положительные на 8?
Добавлено спустя 12 минут 32 секунды:ну тут, кажется сообразил про какой for идет речь и внутрь какого цикла. Тогда действительно можно убрать bedin ... end.
- Код: Выделить всё
for i:=1 to n do
begin
if (a[i] mod 10 = 8) and (a[i]>max) then max:=a[i]
end;
Хотя, это не повлияло на результаты выполнения программы и так и так дает один и тот же результат.