Лабораторна робота №7
Робота з масивами.
Ціль роботи: ознайомитися з застосуванням масивів, способами перетворення списків в масиви та навпаки, основними стандартними функціями обробки масивів.
Задача: написати програму, виконуючу зазначені дії в зазначеній послідовності. В програмі вікористати функції визначення масиву, виділення елемента масиву, організації циклів для операцій з членами масиву.
Приклади:
Визначення одномірного масиву (1Выделение памяти):
(SETQ A (MAKE-ARRAY 5))
Визначення двумірного масиву:
(SETQ A2 (MAKE-ARRAY '(4 3 )) )
Введення одномірного масиву з клавіатури:
(defun Z1(N) (DOTIMES (K N) (SETF (AREF A K)(READ)) ))
Массив A1(M) зі списку L з виводом на екран :
(defun Z(L M)(PROG() (SETQ A1 (MAKE-ARRAY 5))
(DOTIMES (K M)
(PROGN (SETF (AREF A1 K)(CAR L)) (PRIN1 (AREF A1 K))(PRINC " ")
(SETQ L (CDR L)) )) ))
Перетворення двумірного масиву A(M N) в список:
(DEFUN MS (A M N)(PROG (L ) (DOTIMES (I M) (DOTIMES (K N)
(SETQ L (APPEND L (LIST (AREF A I K))) ) ))
(RETURN L) ))
Заданий список перетворити в двумірний массив (4*4), всі числа масива замінити нулями.
(setq l (list 'a 'b 'c 'd 1 2 3 4 'e 'f 'g 'h 5 6 7 8))
(defun f(l) (prog() (setq s (make-array '(4 4)))
(dotimes (i 4) (dotimes (k 4)
(progn (setf (aref s i k)
(cond ((null l) nil)
((not (symbolp (car l))) 0 ) (t (car l))))
(setq l (cdr l))
(prin1 (aref s i k))
(princ " "))) (print '!))))
Результат роботи програми:
> (f l)
A B C D !
0 0 0 0 !
E F G H !
0 0 0 0 !
NIL
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.