Допустим, массив уже задан, поэтому его ввод писать не буду. Kol - количество элементов массива
var
mas, mas_ob: array[0..999] of integer;
i, kol_null, sum, sum_nech, sum_ch, pp, i1, kol, max: integer;
begin
kol_null := 0;
sum := 0;
sum_nech := 0;
sum_ch := 0;
i1 := 0;
max := -10000;
for i := 0 to kol do
begin
if mas[i] <> 0 then kol_null += 1; //2
sum += mas[i]; //3
if mas[i] mod 2 <> 0 then sum_nech += mas[i];//4
if mas[i] mod 2 = 0 then sum_ch += mas[i]; //5
if mas[i] < 0 then mas[i] := abs(mas[i]); //6
if mas[i] mod 21 = 0 then mas[i] := 1; //7
if mas[i] > max then max := mas[i]; //11
end;
pp := mas[0];//8
mas[0] := mas[kol]; //8
mas[kol] := pp;//8
for i := kol downto 0 do //10
begin
mas_ob[i] := mas[i];
i1 += 1;
end;
writeln('Количество ненулевых элементов: ', kol_null);
writeln('Сумма всех элеметов: ', sum);
writeln('Сумма нечетных элеметов: ', sum_nech);
writeln('Сумма четных элеметов: ', sum_ch);
writeln('Максимальный элемент: ', max);
end.
По условию задания не очевидно, что является делителем, а что делимым, поэтому в решении будут рассмотрены оба варианта.
Немного теории. Если a делимое и b делитель, то существуют единственные q и r, такие что:
a = b * q + r; где a, b, q, r - целые числа, и b не равно 0, 0 <= r < |b|.
То есть, если мы подобрали такие q и r, что выполняется условие, то это значит что они единственные и верные.
Вначале будет рассмотрен вариант, где второй аргумент функции делится на первый аргумент функции.
mod(-7,87) = 87 % (-7) = 3 . Проверка: 87 = (-7)*q + r = (-7)*(-12) + 3.
mod(10,99) = 9. Проверка: 99 = 10 * 9 + 9.
mod(-7,-13) = 1. Проверка: -13 = (-7) * q + r = (-7)*2 + 1.
Далее рассматривается вариант, когда первый аргумент функции делится на второй аргумент.
a = b * q + r.
mod(-7,87) = -7 % 87 = 80. Проверка: -7 = 87 * (-1) + 80.
mod(10,99) = 10. Проверка: 10 = 99 * 0 + 10.
mod(-7,-13)=-7 % - 13 = 6. Проверка: -7 = -13 * 1 + 6.
П.С. На калькуляторы в Интернете не ориентируйтесь, они не корректно обрабатывают такие выражения.