Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 21

Обработка матриц

06.01.2012, 14:12. Показов 3187. Ответов 4
Метки нет (Все метки)

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

Найти сумму всех чисел, входящих числовыми компонентами в те списки, которые, являясь элементами матрицы, лежат на ее главной диагонали.
Упомянутые списки должны быть подсписками уже третьего уровня в исходном списке которым представлена сама матрица (не учитывать чисел, которые просто находятся на диагонали и являются обычными элементами матрицы.

Спасибо за внимание.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2012, 14:12
Ответы с готовыми решениями:

Обработка матриц
Вычислить и запомнить сумму и число элементов каждой строки матрицы. Результаты отпечатать в виде двух столбцов. Имя и размеры матрицы:...

Обработка матриц
Переписать наибольшие отрицательные элементы каждого столбца матрицы DY(m,n)в одномерном массив P.(процедура функции ) m=4 n=2 ...

Обработка матриц
Имеется код! void maxToArr(int ar,int matr, int nRow, int nCol){ int max=matr; for(int i=0;i<nRow;i++) for(int...

4
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
06.01.2012, 23:16
С макросом do можно сделать поприятнее (не знаю, можно ли его использовать):
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
(defun f (mtrx)
  (prog (i j row sum-in-row sum)
     (setq i 0)
     (setq sum 0)
     loop
     (cond ((null mtrx) (return sum)))
     (setq row (car mtrx))
     (setq mtrx (cdr mtrx))
     (setq i (1+ i))
     (setq j 1)
     (setq sum-in-row 0)
     row-loop
     (cond ((= i j) (setq row (car row)) (go calc-sum-in-row))
       ((> i j) (setq row (cdr row)) (setq j (1+ j)) (go row-loop)))
     accumulation
     (setq sum (+ sum sum-in-row))
     (go loop)
     calc-sum-in-row
     (cond ((atom row) (setq sum-in-row 0) (go accumulation)))
     calc-sum-in-row-loop
     (cond ((null row) (go accumulation))
       (t (cond ((numberp (car row)) (setq sum-in-row (+ sum-in-row (car row)))))
          (setq row (cdr row)) 
          (go calc-sum-in-row-loop)))))
 
CL-USER> (f '()) ; матрица 0 x 0
0
CL-USER> (f '(((1 2 3)))) ; матрица 1 x 1,  в качестве элемента - список (1 2 3)
6
CL-USER> (f '((1))) ; 1 x 1, в качестве элемента - число 1
0
CL-USER> (f '((1     2    3) ; 3 x 3, подходит только (2,2)-элемент
          (a   (4 5)  6)
          ((a) (a 8)  9)))
9
CL-USER> (f '(((1 2) 2    3) ; подходят все элементы диагонали
          (4   (4 5)  6)
          (7   (1 8) (9))))
21
CL-USER> (f '((1 2 3)
          (4 5 6)
          (7 8 9)))
0
CL-USER> (f '(((1 a) 2    3)
          (4   (4 5)  6)
          (7   (1 8) (b))))
10
1
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
07.01.2012, 14:51
с loop тож неплохо))
Lisp
1
2
3
4
5
6
7
8
(defun f (matrix)
             (flet ((fun (l)
                      (if (atom l) 0
                          (loop for a in l
                             if (numberp a) summing a))))
               (loop for a in matrix
                    for b from 0
                    summing (fun (nth b a)))))
1
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 21
07.01.2012, 16:05  [ТС]
Большое спасибо за оба решения!
Макросы в этой задаче использовать запретил преподаватель, потому предпочтительней вариант bokunopico, однако вы мне оба очень помогли!
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
07.01.2012, 16:33
вот тебе без макросни
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun f-sum (l)
           (if (atom l) 0
               (if (null l) 0
                   (if (numberp (car l))
                       (+ (car l) (f-sum (cdr l)))
                       (f-sum (cdr l))))))
 
(defun f (matrix &optional (n 0))
           (if (null matrix) 0
               (+ (f-sum (nth n (car matrix)))
                  (f (cdr matrix) (1+ n)))))
Добавлено через 12 минут
о, не доглядел, у тебя ведь тут
Цитата Сообщение от stvk Посмотреть сообщение
в операторном стиле
так что моё решение тебе не прокатит, ты преподу скажи, что опегатогный стиль в лиспе это моветон и
после этого он начнёт тебя лечить про неявный progn где только можно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2012, 16:33
Помогаю со студенческими работами здесь

Обработка матриц
помогите с зачётами по паскалю 1)Дана целочисленная матрица размера 6х9. Найти матрицу получающуюся из данной: перестановкой...

Обработка матриц
Помогите кому не лень) Ввести двумерный массив {A}_{3x5}. Определить в нём среднее геометрическое элементов, у которых оба индекса...

Обработка матриц
помогитете пожалуйста с РГЗ!:swoon: Осуществить сортировку массива методом "быстрая сортировка". Алгоритм оформить в подпрограмму...

Обработка матриц - С++
Вот задача нужно решить - С++. Не могу решить, не получается... Найти наибольший и наименьший элементы матрицы и поменять местами...

Обработка матриц
Найти сумму положительных элементов по каждому столбцу матрицы EH(m,n) и записать полученные величины в одномерный массив Y. Размерность:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru