Курсовая работа: ЛИСП-реализация операций над матрицами
;ПОЛУЧАЕМ РАЗМЕРНОСТЬ ВТОРОЙ МАТРИЦЫ
(SETQ ROW_COL2 (READ INPUT_STREAM))
;ПОЛУЧАЕМ МАТРИЦУ
(SETF MATRIX2 (READ INPUT_STREAM))
;ПОЛУЧАЕМ СПИСОК ЧИСЕЛ, НА КОТОРЫЕ БУДЕМ УМНОЖАТЬ МАТРИЦУ
(SETQ LIST_NUM2 (READ INPUT_STREAM))
(CLOSE INPUT_STREAM)
;ЗАПИСЫВАЕМ ЧИСЛО СТРОК И СТОЛБЦОВ МАТРИЦЫ 1
(SETQ ROW1 (CAR ROW_COL1))
(SETQ COL1 (CADR ROW_COL1))
;ЗАПИСЫВАЕМ ЧИСЛО СТРОК И СТОЛБЦОВ МАТРИЦЫ 2
(SETQ ROW2 (CAR ROW_COL2))
(SETQ COL2 (CADR ROW_COL2))
;СЛОЖЕНИЕ МАТРИЦ
(DEFUN SUM_MATRIX (MATR1 MATR2 R1 R2 C1 C2)
;МАССИВ СУММЫ ДВУХ МАТРИЦ
(DECLARE (SPECIAL RES_MATRIX))
;ЕСЛИ ЧИСЛО СТРОК МАТРИЦЫ 1 НЕ РАВНО ЧИСЛУ СТРОК И СТОЛБЦОВ МАТРИЦЕ 2, ТО СЛОЖЕНИЕ МАТРИЦ НЕВОЗМОЖНО
(IF (OR (/= R1 R2) (/= C1 C2)) '"It is not possible to calculate the sum of matrices"
(PROGN
(SETQ RES_MATRIX (MAKE-ARRAY (LIST R1 C1) :ELEMENT-TYPE 'INTEGER :INITIAL-ELEMENT 0))
(DO
((I 0))
((>= I R1))
(DO
((J 0))
((>= J C1))
(SETF (AREF RES_MATRIX I J) (+ (AREF MATR1 I J) (AREF MATR2 I J)))
(SETQ J (+ J 1))