Определить количество положительных элементов строк матрицы A(10,20) и запомнить их в одномерном массиве - Lisp

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

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

Помогите пожалуйста... Определить количество положительных элементов каждой строки матрицы A(10,20) и запомнить их в одномерном массиве N. Массив N вывести. нашел в интернете пример:
Листинг программы
  1. (defun task (matr)
  2. (mapcar #'(lambda (r) (count-if 'minusp r)) matr))
  3. ==> task
  4. (task '((1 2 3 4 5) (9 -5 8 -7 0) (-1 -2 -3 -4 0) (1 2 -3 4 5) (-1 2 3 -4 5)))
не выводит массив N с отрицательными элементами!

Решение задачи: «Определить количество положительных элементов строк матрицы A(10,20) и запомнить их в одномерном массиве»

textual
Листинг программы
  1. (defun ma (w
  2.            &aux
  3.            (v (loop for a in w collect
  4.                     (loop for e in a
  5.                           when (plusp e) count e))))
  6.   (make-array (length v) :initial-contents v))
  7.  
  8. > (ma '((1 2 3 4 5) (9 -5 8 -7 0) (-1 -2 -3 -4 0) (1 2 -3 4 5) (-1 2 3 -4 5)))
  9. #(5 2 0 4 3)

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

Функция ma принимает строку w в качестве входного аргумента. Внутри функции создается вспомогательная переменная v, которая инициализируется значением, полученным в результате выполнения цикла loop для каждого элемента строки w. Внутри цикла loop для каждого элемента a из строки w выполняется вложенный цикл loop, который ищет положительные элементы e и увеличивает счетчик count на единицу каждый раз, когда он находит положительный элемент. Значение count в конечном итоге сохраняется в массиве v. Функция make-array используется для создания одномерного массива, заполненного значениями из массива v. Результатом выполнения функции ma для строки w будет новый массив, содержащий результаты подсчета положительных элементов в каждой строке исходной матрицы. В данном примере результатом будет массив #(5 2 0 4 3).

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


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

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

11   голосов , оценка 3.727 из 5

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

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

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