Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > CommonLisp Работа с файлами


Автор: raigon 26.10.2014, 18:04
Помогите пожалуйста! 
Есть сделанное задание. Помогите сделать все тоже самое но в файле.  Язык CommonLisp!


Написать программу, которая формирует базу данных на основе списков. Эта программа должна иметь функцию список (запись в БД), функции модификации записей и функции доступа к отдельным данным.

Вид БД:
((фамилия имя) №зачетки №группы вариант_задания оценка)

Задания:
1. Найти по номеру зачетки студента и добавить к фамилии и имени отчество.
2. Подсчитать средний балл успеваемости группы.


Вот код:
Код

(defun add-student (base name surname nz ng v r)
  (cons (list (list surname name) nz ng v r) base))
 
;(setq *base* nil)
;(setq *base* (add-student *base* 'Иван 'Бойко 11 22 1 3))
;(setq *base* (add-student *base* 'Петр 'Бугайов 12 22 1 4))
 
 
(defun add-otch (base nz otch)
 (if (null base) 
  base 
   (if (= nz (cadar base)) (cons (append (list (append (caar base) (list otch))) (cdar base)) (cdr base))
   (cons (car base) (add-otch (cdr base) nz otch))))) 
 
;(setq *base* (add-otch *base* 12 'Петрович))
 
 
(defun avg-ball (base ng)
  (let ((lst-v  (mapcar #'(lambda (z) (nth 4 z)) (remove-if #'(lambda (x) 
        (/= ng (caddr x))) base))))
        (if (null lst-v) nil (/ (apply '+ lst-v) (length lst-v)))))
 
;(avg-ball *base* 22)
 
;Доступ к данным по индексу
(defun access(elem index base)
(nth index (nth elem base))
)


Зарание спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)