Найти произведение элементов, у которых сумма цифр кратна 4 (N) - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Доброе время суток! Хотелось бы получить помощь в следующей задаче: Пользователь вводит размерность и элементы одномерного массива натуральных чисел. Найти произведение элементов, у которых сумма цифр кратна 4 и факториал первого элемента массива. Вспомогательный алгоритм оформите в виде рекурсивной процедуры или функции в отдельный модуль. А именно с задачей "Найти произведение элементов, у которых сумма цифр кратна 4". Если кто-то поможет, то буду очень благодарен за Вашу помощь.
Листинг программы
  1. //Сумма цифр числа
  2. function summa(a: integer): integer;
  3. var sum: integer;
  4. begin
  5. sum:=0;
  6. while a>0 do
  7. begin
  8. sum:=sum+(a mod 10);
  9. a:=a div 10;
  10. end;
  11. summa:=sum;
  12. end;
  13. //End.
  14. begin
  15. try
  16. //Произведение элементов, у которых сумма цифр кратна 4
  17. mult:=0;
  18. for i:=1 to n do
  19. begin
  20. a:=summa(b[i]);
  21. if a mod 4=0 then
  22. mult:=mult*b[i];
  23. end;
  24. writeln ('Умножение=', mult);
  25. //End.
  26. readln;
  27. except
  28. on E: Exception do
  29. Writeln(E.ClassName, ': ', E.Message);
  30. end;
  31. end.
Не хочет происходить умножение

Решение задачи: «Найти произведение элементов, у которых сумма цифр кратна 4 (N)»

textual
Листинг программы
  1. type
  2.   int = integer;
  3.   long = int64;
  4.   uint = word;
  5.  
  6. function summa(a:int):uint; //Сумма цифр числа
  7. begin
  8.   if (a = 0) then
  9.     summa:= 0
  10.   else
  11.     summa:= a mod 10 + summa(a div 10);
  12. end;
  13.  
  14. function fact(n:int):int; //Факториал
  15. begin
  16.   if (n = 2) then
  17.     fact:= n
  18.   else
  19.     fact:= n * fact(n - 1);
  20. end;
  21.  
  22. var
  23.   mult:long; //На всякий случай int64
  24.   arr:array of int;
  25.   n, i:uint;  
  26.    
  27. begin
  28.   writeln('Введите размер массива:');
  29.   read(n);
  30.   setlength(arr, n);
  31.   writeln('Введите массив:');
  32.   mult:= 1; //И не 0, а 1, иначе получите в любом случае 0, т.к. будете умножать на 0!
  33.   for i:= low(arr) to high(arr) do //Здесь low можно заменить на 0, а high на n - 1
  34.   begin
  35.     read(arr[i]);
  36.     if (summa(arr[i]) mod 4 = 0) then
  37.       mult:= mult * arr[i];
  38.   end;
  39.   writeln('Произведение: ', mult);  
  40.   writeln('Факториал: ', fact(arr[low(arr)]));
  41. end.

Объяснение кода листинга программы

  1. Создается тип данных int, который представляет целые числа.
  2. Создается функция summa, которая принимает целое число и возвращает сумму его цифр.
  3. Создается функция fact, которая принимает целое число и возвращает его факториал.
  4. Создается переменная mult, которая будет хранить произведение чисел.
  5. Создается переменная arr, которая будет хранить массив целых чисел.
  6. Считывается размер массива n.
  7. Устанавливается длина массива arr равной n.
  8. Считывается массив arr.
  9. Инициализируется переменная mult единицей, так как произведение любого числа на ноль равно нулю.
  10. Запускается цикл for, который проходит по каждому элементу массива arr.
  11. В цикле считывается элемент массива arr[i].
  12. Вызывается функция summa для получения суммы цифр числа arr[i].
  13. Если остаток от деления суммы цифр на 4 равен нулю, то значение переменной mult умножается на arr[i].
  14. После завершения цикла for выводится произведение mult.
  15. Выводится факториал числа arr[low(arr)].

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы