Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 0
Регистрация: 11.12.2013
Сообщений: 58

сложение элементов диагоналей матрицы

11.12.2013, 20:36. Показов 2195. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
(вообще нужна прога на скиме, но так как синтаксис схожий то разберусь и в лиспе) необходима прога которая буде складывать диагонали матрицы следующим образом:
дано '((1 2 3) (4 5 6) (7 8 9))
или вот так вот
1 2 3
4 5 6
7 8 9
нужно сложить диагонали таким образом:
'(1 (2+4) (3+5+7) (6+8) 9)
т.е. ответ должен быть
'(1 6 15 14 9)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2013, 20:36
Ответы с готовыми решениями:

Найти минимум среди сумм модулей элементов диагоналей матрицы, параллельных побочной диагонали матрицы
Дана целочисленная квадратная матрица. Определить: 2) Минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали...

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

Найти сумму элементов главной и произведение элементов побочной диагоналей квадратной матрицы
Найти сумму элементов главной и произведение элементов побочной диагоналей квадратной матрицы. в c#

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
11.12.2013, 21:57
Уж не знаю, поможет ли тебе (для Scheme) вот это:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
;; разложение p на суммы пар; n - размер матрицы.
 
(defun decomp (p n)
 (let ((r nil))
  (iter (for i from 1 to (- p 1)) 
         (when (and (<= i n) (<= (- p i) n)) (collecting (list i (- p i)) into r)))
  r))
  
;; Решение 
  
(defun sum-diag (matr)
  (let ((n (length matr)) (res nil))
       (iter (for k from 2 to (+ n n))
            (collecting (apply '+ (mapcar #'(lambda (ij) (nth (- (cadr ij) 1) (nth (- (car ij) 1) matr))) (decomp k n))) into res))
       res))
 
(sum-diag '((1 2 3 4) (5 6 7 8) (9 10 11 12) (13 14 15 16)))
 
==> (1 7 18 34 33 27 16) ;; кажется, верно
0
2 / 2 / 0
Регистрация: 11.12.2013
Сообщений: 58
11.12.2013, 22:10  [ТС]
эх блин... тут какие то циклы... мы такого не проходили... да и такого вроде нету в скиме... задача то в общем то немножко другого вида, даны два произвольных многочлена, надо их пеемножить
например для многочлена (1x^2+2x+3) список будет выглядеть '(1 2 3)
собственно я перемножил все елементы и вот получилась матрица, а надо то чтобы ещё по степеням иксов сложилось((

Добавлено через 8 минут
я вот подумал, преобразовать матрицу из
1 2 3
4 5 6
7 8 9
в
1 2 3 0 0
0 4 5 6 0
0 0 7 8 9
и тогда уже надо складывать столбцы, а с этим проблемы нету, вопрос в другом, как реализовать такое преобразование матрицы?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
12.12.2013, 12:24
Цитата Сообщение от el_razor Посмотреть сообщение
например для многочлена (1x^2+2x+3) список будет выглядеть '(1 2 3)
- логичнее
'(3 2 1) - от младших к старшим.

Добавлено через 13 часов 12 минут
Вот чисто функциональное умножение полиномов на Лиспе:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun poly-mult (p1 p2)
  (let* ((n1 (length p1)) ;; степень первого
          (n2 (length p2)) ;; степень второго
          (q1 (mapcar 'list p1 (range 0 (- n1 1)))) ;; превращаем в список пар (коэфф степень)
          (q2 (mapcar 'list p2 (range 0 (- n2 1)))) ;; превращаем в список пар (коэфф степень)
          (q12 (cart q1 q2))                              ;; декартово произведение пар
          (tmp (mapcar #'(lambda (x)                  ;; умножение
                      (let ((c1 (caar x))
                            (d1 (cadar x))
                            (c2 (caadr x))
                            (d2 (cadadr x)))
                           (list (* c1 c2) (+ d1 d2)))) q12))) ;; коэфф. умножаются, степени складываются
          (mapcar #'(lambda (v) ;; приведение подобных
                      (apply '+ (mapcar 'car (remove-if #'(lambda (z) (/= (cadr z) v)) tmp))))
                      (range 0 (+ n1 n2 -2)))))
  
==> poly-mult
 
(poly-mult '(3 2 3) '(3 7))
 
==> (9 27 23 21)
список (3 2 3) - это https://www.cyberforum.ru/cgi-bin/latex.cgi?3+2x+3{x}^{2}
соотв. (3 7) - это https://www.cyberforum.ru/cgi-bin/latex.cgi?3+7x
результат = (9 27 23 21) = https://www.cyberforum.ru/cgi-bin/latex.cgi?9+27x+23{x}^{2}+21{x}^{3}
2
2 / 2 / 0
Регистрация: 11.12.2013
Сообщений: 58
12.12.2013, 15:14  [ТС]
спасибо, но это не подошло... с горем пополам все таки сделал прогу сам... ну вдруг кому нибудь понадобится... вот код
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(define (UmMnog a b) 
  (define (na4 n matr)
    (map (lambda (y) (* n y)) matr))
  (define (matrix a b)
    (define (iter n k rez)
      (if (= 0 (length k))
          rez
          (iter n (cdr k) (appel rez (na4 (car k) n)))))
    (if (> (length a) (length b))
        (iter a b '())
        (iter b a '())))
 (define (sloz Mn)  
   (foldl (lambda (x res) (map + res x)) (build-list (- (+ (length a) (length b)) 1) (lambda (x)0))  (zeroed Mn)))
(define (zeroed mn) 
  (define (iter res ost l r) 
    (if (empty? ost) 
        (reverse res) 
        (iter (cons (append (build-list l (lambda (x) 0)) (car ost) (build-list r (lambda (x) 0))) res) (cdr ost) (+ l 1) (- r 1)))) 
  (iter '() mn 0  (- (- (+ (length a) (length b)) 1)(length (car mn)))))
(sloz (matrix a b)))
это на скиме, а он ведь диалект лиспа...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2013, 15:14
Помогаю со студенческими работами здесь

Найти произведение всех элементов матрицы, кроме элементов главной и побочной диагоналей
Сформулировать двумерный массив чисел. Найти произведение всех элементов массива кроме элементов главной и побочной диагоналей.

Максимум из элементов диагоналей матрицы
namespace ConsoleApp1 { class Program { static void Main() { int mas = new int; Random Gen = new Random(); for (int i = 0;...

Максимум сумм элементов диагоналей матрицы
Задача такая: найти максимум среди сумм диагоналей, параллельных главной. Уже гуглил, вот что нашел: function...

Найти сумму элементов диагоналей матрицы
Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных главной1|побочной2 (начиная с одноэлементной диагонали...

Вычислить суммы элементов диагоналей матрицы
Напишите программу на языке программирования для задания: создайте матрицу NxN и вычислите суммы элементов диагоналей. Форма должна...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru