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

Выручите пожалуйста=)Очень надо. Дана вещественная матрица NxM

23.10.2013, 22:21. Показов 1486. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана вещественная матрица NxM. Переставляя её строки и столбцы, добиться того, что наибольший элемент(один из них) оказался в верхнем левом углу. В нисходящей рекурсии и потом в восходящей надо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2013, 22:21
Ответы с готовыми решениями:

Дана вещественная матрица размером NxM.Определить числа B1..Bm,равные значениям средних арифметических элементов столбцов.
Дана вещественная матрица размером NxM.Определить числа B1..Bm,равные значениям средних...

Дана вещественная матрица размером NxM. Упорядочить ее строки по неубыванию их первых элементов
Дана вещественная матрица размером NxM. Упорядочить ее строки по неубыванию их первых элементов

Дана вещественная матрица размером nxm. Определить сумму отрицательных элементов каждой строки
Дана вещественная матрица размером nxm. Определить сумму отрицательных элементов каждой строки

Пусть дана вещественная матрица размером nxm. Найдите среднее арифметическое наибольшего и наименьшего значений
Пусть дана вещественная матрица размером nxm. Найдите среднее арифметическое наибольшего и...

9
Модератор
Эксперт функциональных языков программированияЭксперт Python
36918 / 20472 / 4242
Регистрация: 12.02.2012
Сообщений: 33,838
Записей в блоге: 13
24.10.2013, 11:45 2
Как хранится матрица (по строкам, по столбцам)?
0
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 5
24.10.2013, 12:21  [ТС] 3
Это двумерный массив.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36918 / 20472 / 4242
Регистрация: 12.02.2012
Сообщений: 33,838
Записей в блоге: 13
24.10.2013, 14:28 4
Приведи пример задания такой матрицы для n=m=2
0
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 5
24.10.2013, 18:28  [ТС] 5
еслиб знал сам сделал=)
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36918 / 20472 / 4242
Регистрация: 12.02.2012
Сообщений: 33,838
Записей в блоге: 13
24.10.2013, 19:57 6
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Life_gold Посмотреть сообщение
еслиб знал сам сделал=)
не думаю...

Добавлено через 1 час 17 минут
Вот решение на списках (матрицы хранятся по строкам):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;; Функция обмена двух элементов списка:
 
(defun swap-el (lst n1 n2)
  (cond ((= n1 n2) lst)
        ((> n1 n2) (swap-el n2 n1))
        (t (append (subseq lst 0 n1) 
                   (subseq lst n2 (+ n2 1)) 
                   (subseq lst (+ n1 1) n2) 
                   (subseq lst n1 (+ n1 1)) 
                   (subseq lst (+ n2 1))))))
 
;; Проверка:
 
(swap-el '(1 2 3 4 5 6 7 8) 3 4)
 
==> (1 2 3 5 4 6 7 8)
 
(swap-el '(1 2 3 4 5 6 7 8) 1 4)
 
==> (1 5 3 4 2 6 7 8)
Теперь возьмем матрицу:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\begin{pmatrix}1 & 2 & 3 & 4 \\ 11 & 22 & 33 & 44 \\ -11 & -22  & -33 & -44 \end{pmatrix}<br />

Эта матрица в виде списка будет иметь вид:

Lisp
1
((1 2 3 4) (11 22 33 44) (-11 -22 -33 -44))
Чтобы не перенабирать матрицу, заведем глобальную переменную:

Lisp
1
2
3
4
5
(setq matr '((1 2 3 4) (11 22 33 44) (-11 -22 -33 -44)))
 
==> ((1 2 3 4) (11 22 33 44) (-11 -22 -33 -44))
 
Создана глобальная переменная matr
Теперь напишем две функции: обменять две строки swap-row и обменять два столбца swap-col:

Lisp
1
2
3
4
5
6
7
8
9
;; тривиально:
 
(defun swap-row (matr n1 n2)
  (swap-el matr n1 n2))
 
;; чуть сложнее:
 
(defun swap-col (matr n1 n2)
  (mapcar #'(lambda (x) (swap-el x n1 n2)) matr))
А теперь решение:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun task (matr)
  (let* ((vmax (mapcar #'(lambda (x) (apply 'max x)) matr))
         (mmax (apply 'max vmax))
         (rmax (position mmax vmax))
         (cmax (position mmax (elt matr rmax))))
        (swap-row (swap-col matr 0 cmax) 0 rmax)))
 
==> task
 
(task matr)
 
==> ((44 22 33 11) (4 2 3 1) (-44 -22 -33 -11))
Ответ верен.
3
1051 / 945 / 107
Регистрация: 04.11.2012
Сообщений: 975
Записей в блоге: 3
24.10.2013, 21:28 7
Лучший ответ Сообщение было отмечено как решение

Решение

Немного сыроватое решение, но мне хватило.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;Создать матрицу случайных чисел.
(defun make-matr (m n)
  (do ((j m (1- j))
       (r () (cons
               (do ((i n (1- i)) (j j)
                    (r () (cons (random 20) r))) ((zerop i) r)) r)))
      ((zerop j) r)))
 
; (make-matr 4 4)
; ((6 3 7 5) (0 7 1 7) (2 5 8 8) (7 5 1 4))
 
;Максимальный элемент матрицы.
(defun max-elem-matr (m)
  (apply #'max (mapcar #'(lambda (x) (apply #'max x)) m)))
 
; (max-elem-matr '((6 3 7 5) (0 7 1 7) (2 5 8 8) (7 5 1 4)))
; 8
 
;Проверка позиции ряда, с максимальным числом.
(defun pos-row-max (i m &optional (c 1))
  (cond ((null m) ())
        ((= i (apply #'max (car m))) c)
        (t (pos-row-max i (cdr m) (1+ c)))))
 
; (pos-row-max 8 '((6 3 7 5) (0 7 1 7) (2 5 8 8) (7 5 1 4)))
; 3
 
(defun transpose (matrix) (apply 'mapcar (cons 'list matrix)))
 
;Вращать, пока ряд с мак.элем не будет равен 1.
(defun permut-row (m)
  (do ((m m (append (cdr m) (list (car m))))
       (max (max-elem-matr m)))
      ((= 1 (pos-row-max max m)) m)))
 
; (permut-row '((2 5 8 8) (7 5 1 4) (6 3 7 5) (0 7 1 7)))
; ((2 5 8 8) (7 5 1 4) (6 3 7 5) (0 7 1 7))
 
;Сборка.
(defun suite (m n &optional matrix)
  (setq matrix (make-matr m n))
  (format t "~&~{~{~3d~^ ~}~%~}~%" matrix)
  (setq matrix (permut-row matrix))
  (if (= (max-elem-matr matrix) (caar matrix)) matrix)
  (setq matrix (permut-row (transpose matrix)))
  (setq matrix (permut-row matrix))
  (setq matrix (if (= (max-elem-matr matrix) (caar matrix)) (transpose matrix)))
  (format t "~&~{~{~3d~^ ~}~%~}~%" matrix))
 
> (suite 4 3)
 11  15   1
 13   8  10
  0   6   5
  6  17   0
 
 17   0   6
 15   1  11
  8  10  13
  6   5   0
 
 
> (suite 3 4)
 18  14  17  11
 12  15   7  19
  3   1   9   0
 
 19  12  15   7
  0   3   1   9
 11  18  14  17
3
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 5
24.10.2013, 23:04  [ТС] 8
Круто конечно=) Но можно использовать только стандартные функции такие как "car" cad" "cons" "append" )))
И использование "do" "random" "zerop" "apply" "lambda" "mapcar" нельзя=)

Добавлено через 40 секунд
Извиняюсь что забыл предупредить.
0
helter
24.10.2013, 23:05
  #9

Не по теме:

То есть random, zerop, apply и mapcar - нестандартные функции? Лол. Курите CLHS вместе с преподом.

0
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 5
24.10.2013, 23:10  [ТС] 10
Цитата Сообщение от helter Посмотреть сообщение

Не по теме:

То есть random, zerop, apply и mapcar - нестандартные функции? Лол. Курите CLHS вместе с преподом.

Для препода они не стандартны.
0
24.10.2013, 23:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2013, 23:10
Помогаю со студенческими работами здесь

Дана матрица размером NxM . Упорядочить ее столбцы по убыванию элементов. Программу надо в Delphi
Дана матрица размером NxM . Упорядочить ее столбцы по убыванию элементов. Программу надо в Delphi.....

пожалуйста выручите написать очень нужно завтра защита а я не могу понять! выручите кто может !
Получите целочисленную матрицу A размеров nxm, для которой aij=i+2j

Пусть даны натуральные числа n и m, вещественное число x, вещественная матрица размером nxm. Получите значение
Пусть даны натуральные числа n и m, вещественное число x, вещественная матрица размером nxm....

Дана вещественная матрица
Дана вещественная матрица Q (n,m). 1) Нужно заполнить матрицу из файла. Пример матрицы в файле:...


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

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

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