18.10.2022

Язык Паскаль. PascalABC.NET. Массивы. Методы Where, Sum, Max

Задача. Дан массив целых чисел из N элементов. Верно ли, что сумма чисел, оканчивающихся на 7, меньше утроенного максимального нечетного значения?

Пример:

Массив mas = [29, -17, 7, 24, 27, 54]

Сумма чисел, оканчивающихся на 7: -17+7+27 = 17

Максимальное нечетное значение: 29

17 < 3*29, то есть 17 < 87, да, верно.

Как будем решать задачу

Опишем массив в блоке Var

var mas:array of integer;

Выделим N ячеек для хранения данных в массиве:

setLength(mas,N);

Введем данные с клавиатуры и сохраним в массиве:

for k:=0 to mas.Length-1 do

  begin

    readln(mas[k]);

  end;

Нумерация ячеек при таком объявлении ведется с 0 и, номер последней ячейки можно вычислить так: mas.length - 1, где mas.length это длина массива.

Найдем элементы, оканчивающиеся на 7: mas.Where(k->abs(k) mod 10 = 7)

Метод Where (где) находит элементы массива, удовлетворяющие условию.

В нашем случае условие такое: abs(k) mod 10 = 7  (модуль числа применяем для того, чтобы обработать в том числе и отрицательные числа).

Результатом работы метода Where является набор тех элементов, которые отвечают условию. Для решения нашей задачи нужно найденные элементы суммировать. Сделаем это методом Sum:

mas.Where(k->abs(k) mod 10 = 7).Sum

Найденное значение сохраним в переменной s.

s:=mas.Where(k->abs(k) mod 10 = 7).Sum;

Таким же образом будем находить нечетные значения в массиве, а затем применим метод Max:

mas.Where(k->k mod 2 <> 0).Max

Найденное значение сохраним в переменной m.

m:=mas.Where(k->k mod 2 <> 0).Max;

Выполним проверку: если s<m*3, то верно, иначе неверно.

Программа решения задачи на языке Паскаль

var mas:array of integer;

    s,m,N,k:integer;

begin

  readln(N);

  setLength(mas,N);

  for k:=0 to mas.Length-1 do

  begin

    readln(mas[k]);

  end;

  s:=mas.Where(k->abs(k) mod 10=7).Sum;

  m:=mas.Where(k->k mod 2<>0).Max;

  if s<m*3 then println('Верно') else println('Неверно');

end.

Результат запуска программы

Результат запуска программы

Объявление и методы динамических массивов (читать)