как найти сумму и максимум элементов массива в паскале?
ОГЭ через месяц, тренируюсь. Надо посчитать сумму всех чисел массива и найти самое большое. Сумму вроде сделал, а с максимумом затык — он у меня выдаёт всегда последнее число, а не самое большое.
var
a: array[1..5] of integer = (3, 9, 1, 7, 4);
i, max: integer;
begin
for i := 1 to 5 do
max := a[i];
writeln(max);
end.
Что я делаю не так с максимумом?
2 ответа
Ты в цикле просто перезаписываешь max каждым элементом, поэтому и остаётся последний. Надо сравнивать: меняем max только если текущий элемент больше. И стартовое значение max бери первым элементом массива:
var
a: array[1..5] of integer = (3, 9, 1, 7, 4);
i, max, s: integer;
begin
s := 0;
max := a[1];
for i := 1 to 5 do
begin
s := s + a[i];
if a[i] > max then
max := a[i];
end;
writeln('Сумма = ', s);
writeln('Максимум = ', max);
end.
Идея максимума: представь, что самый большой пока — первый. Потом идёшь по массиву, и если встретил кого-то больше — запоминаешь его. В конце в max лежит самый большой.
Сумма проще: заводим s := 0 и в цикле прибавляем каждый элемент. Важно — s := 0 ДО цикла, а не внутри, иначе обнулится на каждом шаге.
для минимума всё то же самое, только знак переверни: if a[i] < min then min := a[i]; и min тоже стартует с a[1]. на ОГЭ это прям частая задачка, набей руку)