Найти произведение элементов, у которых сумма цифр кратна 4 (N) - Turbo Pascal
Формулировка задачи:
Доброе время суток! Хотелось бы получить помощь в следующей задаче:
Пользователь вводит размерность и элементы одномерного массива натуральных чисел. Найти произведение элементов, у которых сумма цифр кратна 4 и факториал первого элемента массива. Вспомогательный алгоритм оформите в виде рекурсивной процедуры или функции в отдельный модуль.
А именно с задачей "Найти произведение элементов, у которых сумма цифр кратна 4".
Если кто-то поможет, то буду очень благодарен за Вашу помощь.
Не хочет происходить умножение
Решение задачи: «Найти произведение элементов, у которых сумма цифр кратна 4 (N)»
textual
Листинг программы
type
int = integer;
long = int64;
uint = word;
function summa(a:int):uint; //Сумма цифр числа
begin
if (a = 0) then
summa:= 0
else
summa:= a mod 10 + summa(a div 10);
end;
function fact(n:int):int; //Факториал
begin
if (n = 2) then
fact:= n
else
fact:= n * fact(n - 1);
end;
var
mult:long; //На всякий случай int64
arr:array of int;
n, i:uint;
begin
writeln('Введите размер массива:');
read(n);
setlength(arr, n);
writeln('Введите массив:');
mult:= 1; //И не 0, а 1, иначе получите в любом случае 0, т.к. будете умножать на 0!
for i:= low(arr) to high(arr) do //Здесь low можно заменить на 0, а high на n - 1
begin
read(arr[i]);
if (summa(arr[i]) mod 4 = 0) then
mult:= mult * arr[i];
end;
writeln('Произведение: ', mult);
writeln('Факториал: ', fact(arr[low(arr)]));
end.
Объяснение кода листинга программы
- Создается тип данных
int, который представляет целые числа. - Создается функция
summa, которая принимает целое число и возвращает сумму его цифр. - Создается функция
fact, которая принимает целое число и возвращает его факториал. - Создается переменная
mult, которая будет хранить произведение чисел. - Создается переменная
arr, которая будет хранить массив целых чисел. - Считывается размер массива
n. - Устанавливается длина массива
arrравнойn. - Считывается массив
arr. - Инициализируется переменная
multединицей, так как произведение любого числа на ноль равно нулю. - Запускается цикл
for, который проходит по каждому элементу массиваarr. - В цикле считывается элемент массива
arr[i]. - Вызывается функция
summaдля получения суммы цифр числаarr[i]. - Если остаток от деления суммы цифр на 4 равен нулю, то значение переменной
multумножается наarr[i]. - После завершения цикла
forвыводится произведениеmult. - Выводится факториал числа
arr[low(arr)].