Найти произведение элементов, у которых сумма цифр кратна 4 (N) - Turbo Pascal
Формулировка задачи:
Доброе время суток! Хотелось бы получить помощь в следующей задаче:
Пользователь вводит размерность и элементы одномерного массива натуральных чисел. Найти произведение элементов, у которых сумма цифр кратна 4 и факториал первого элемента массива. Вспомогательный алгоритм оформите в виде рекурсивной процедуры или функции в отдельный модуль.
А именно с задачей "Найти произведение элементов, у которых сумма цифр кратна 4".
Если кто-то поможет, то буду очень благодарен за Вашу помощь.
Не хочет происходить умножение
Листинг программы
- //Сумма цифр числа
- function summa(a: integer): integer;
- var sum: integer;
- begin
- sum:=0;
- while a>0 do
- begin
- sum:=sum+(a mod 10);
- a:=a div 10;
- end;
- summa:=sum;
- end;
- //End.
- begin
- try
- //Произведение элементов, у которых сумма цифр кратна 4
- mult:=0;
- for i:=1 to n do
- begin
- a:=summa(b[i]);
- if a mod 4=0 then
- mult:=mult*b[i];
- end;
- writeln ('Умножение=', mult);
- //End.
- readln;
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
- end.
Решение задачи: «Найти произведение элементов, у которых сумма цифр кратна 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)]
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д