← Все вопросы

как найти сумму и максимум элементов массива в паскале?

Задан 1 месяц назад615 просмотров2 ответа
6

ОГЭ через месяц, тренируюсь. Надо посчитать сумму всех чисел массива и найти самое большое. Сумму вроде сделал, а с максимумом затык — он у меня выдаёт всегда последнее число, а не самое большое.

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 ответа

12
✓ Принятый ответ — помог автору

Ты в цикле просто перезаписываешь 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 ДО цикла, а не внутри, иначе обнулится на каждом шаге.

4

для минимума всё то же самое, только знак переверни: if a[i] < min then min := a[i]; и min тоже стартует с a[1]. на ОГЭ это прям частая задачка, набей руку)

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект