0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 12
1

Clojure Найти сумму, произведение и количество элементов матрицы, максимальный и минимальный элементы

11.05.2014, 14:12. Показов 1186. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, решить следующую задачу:

Квадратная матрица чисел задана списком, в котором каждый элемент представляет собой подсписок, содержащий строку матрицы.

Найти сумму, произведение и количество элементов матрицы, максимальный и минимальный элементы, сумму, произведение и количество диагональных элементов.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2014, 14:12
Ответы с готовыми решениями:

Clojure Найти максимальный и минимальный элементы матрицы
Квадратная матрица чисел задана списком, в котором каждый элемент представляет собой подсписок,...

Найти: произведение отрицательных элементов матрицы, максимальный и минимальный элементы
Посчитать произведение всех отрицательных элементов матрицы. Найти максимальный и минимальный...

Найти максимальный и минимальный элементы и сумму элементов матрицы
Помогите, пожалуйста, дописать программу, "Дана матрица вещественных чисел. Найти максимальный и...

Найти максимальный и минимальный элементы матрицы и вычислить сумму элементов
2. Дана матрица целых чисел размером nхm. Найти максимальный и минимальный элементы матрицы и...

3
Модератор
Эксперт функциональных языков программированияЭксперт Python
35521 / 19996 / 4186
Регистрация: 12.02.2012
Сообщений: 33,173
Записей в блоге: 13
11.05.2014, 15:08 2
Лучший ответ Сообщение было отмечено Dascha25 как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;; Сумма:
 
(defun sum-matr (matr)
  (apply '+ (mapcar #'(lambda (r) (apply '+ r)) matr))) 
 
==> sum-matr
 
(sum-matr '((1 2 3) (4 5 6) (7 8 9)))
 
==> 45
 
;; произведение
 
(defun prod-matr (matr)
  (apply '* (mapcar #'(lambda (r) (apply '* r)) matr))) 
 
==> prod-matr
(prod-matr '((1 2 3) (4 5 6) (7 8 9)))
 
==> 362880
Добавлено через 3 минуты
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
;; минимум и максимум "в одном флаконе":
 
(defun max-min (matr)
  (let ((max (apply 'max (mapcar #'(lambda (r) (apply 'max r)) matr)))
        (min (apply 'min (mapcar #'(lambda (r) (apply 'min r)) matr))))
       (list min max)))
 
==> max-min
 
(max-min '((1 2 -3) (4 5 6) (7 8 0)))
 
==> (-3 8)
Добавлено через 5 минут
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
;; Сумма и произведение диагональных (HomeLisp):
 
(defun sum-diag (matr)
  (apply '+ (mapcar #'(lambda (r n) (nth n r)) matr (range 0 (- (length matr) 1)))))
 
==> sum-diag
 
(sum-diag '((1 2 3) (4 5 6) (7 8 9)))
 
==> 15
 
(defun prod-diag (matr)
  (apply '* (mapcar #'(lambda (r n) (nth n r)) matr (range 0 (- (length matr) 1)))))
 
==> prod-diag
 
(prod-diag '((1 2 3) (4 5 6) (7 8 9)))
 
==> 45
Добавлено через 1 минуту
Что же до количества диагональных элементов, то вопрос довольно странный. У квадратной матрицы количество диагональных элементов равно порядку матрицы...
2
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
11.05.2014, 19:15 3
Clojure:
Lisp
1
2
3
4
5
6
7
8
9
10
11
(ns learn-clojure.example
  (:use [clojure.core.matrix :only [ecount emax emin ereduce esum diagonal]]))
 
(defn task [m]
  (let [mdiag (diagonal m)]
    (into ((juxt esum (partial ereduce *) ecount emax emin) m)
          ((juxt esum (partial ereduce *) ecount) mdiag))))
;; => #'learn-clojure.example/task
 
(task [[1 2 3] [4 5 6] [7 8 9]])
;; => [45 362880 9 9 1 15 45 3]
3
1049 / 943 / 107
Регистрация: 04.11.2012
Сообщений: 972
Записей в блоге: 3
11.05.2014, 23:04 4
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(defun Freebie (array)
  (let ((sum 0) (multi 1) (amount 0) (max ()) (min ())
        (sum-d 0) (multi-d 1))
    (destructuring-bind (x y) (array-dimensions array)
      (dotimes (i x)
        (dotimes (j y)
          (let ((elt (aref array i j)))
            (if (= i j)
                (setq sum    (+ sum elt)
                      multi  (* multi elt)
                      amount (incf amount)
                      max (if max (if (> elt max) elt max) elt)
                      min (if min (if (< elt min) elt min) elt)
                      sum-d    (+ sum-d elt)
                      multi-d  (* multi-d elt))
                (setq sum    (+ sum elt)
                      multi  (* multi elt)
                      amount (incf amount)
                      max (if max (if (> elt max) elt max) elt)
                      min (if min (if (< elt min) elt min) elt))))))
       (list sum multi amount max min sum-d multi-d x))))
 
(Freebie #2A((1 2 3) (4 5 6) (7 8 9)))
; (45 362880 9 9 1 15 45 3)
2
11.05.2014, 23:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2014, 23:04
Помогаю со студенческими работами здесь

Найти максимальный и минимальный элементы матрицы, и сумму элементов между ними
на си: Дана матрица вещественных чисел. Найти максимальный и минимальный элементы, вывести все...

Найти сумму чётных элементов матрицы, исключая максимальный и минимальный, заменить ей угловые элементы
Ввести целочисленный двумерный массив AN×M, вывести его. Найти сумму его чётных элементов, исключая...

Найти максимальный и минимальный элементы матрицы и их произведение
Задали двумерный массив н * м действительных чисел m = 3, n = 4. Найты максимальный и минимальный...

Подсчитать сумму элементов матрицы, определить максимальный и минимальный элементы
Создайте программу, которая в зависимости от величин N (количество строк) и M (количества столбцов)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru