Подсчитать произведение ненулевых элементов каждой строки прямоугольной матрицы - Prolog

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

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

Задана прямоугольная числовая матрица. Подсчитать произведение ее ненулевых элементов в каждой строке.

Решение задачи: «Подсчитать произведение ненулевых элементов каждой строки прямоугольной матрицы»

textual
Листинг программы
prod_mat([],[]).
prod_mat([H|T],[PL|T1]):-prod_list(H,PL),
                                    prod_mat(T,T1).
prod_list([],1).
prod_mat([0|T],P):-prod_list(T,P).
prod_mat([A|T],P):-prod_list(T,P1),
                           P=A*P1.%или P is A*P1

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

Код решает задачу подсчёта произведения ненулевых элементов каждой строки прямоугольной матрицы. Список действий в коде:

  1. prod_mat([],[]). - базовый случай, когда первая аргумент пуст, то есть не содержит ни одного элемента. Результат работы этого случая - пустая строка.
  2. prod_mat([H|T],[PL|T1]):-prod_list(H,PL), - рекурсивный случай, когда первый аргумент не пуст. Рекурсивно вызывается prod_mat для обработки оставшейся части строки.
  3. prod_list([],1). - базовый случай, когда второй аргумент пуст, то есть не содержит ни одного элемента. Результат работы этого случая - 1 (единица).
  4. prod_mat([0|T],P):-prod_list(T,P). - рекурсивный случай, когда в строке есть ноль. Результат работы этого случая - произведение элементов строки до нуля.
  5. prod_mat([A|T],P):-prod_list(T,P1), P=A*P1. - рекурсивный случай, когда в строке нет нуля. Результат работы этого случая - произведение текущего элемента на произведение элементов строки до него.

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы