Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Программная реализация решения задачи




 

;INPUT-STREAM ПОТОК ВВОДА

(SETQ INPUT-STREAM (OPEN " D:\\STUDENTS.TXT":DIRECTION:INPUT))

;СЧИТЫВАЕМ СПИСОК СТУДЕНТОВ

(SETQ STUDENTS (READ INPUT-STREAM))

;ЗАКРЫВАЕМ ФАЙЛ

(CLOSE INPUT-STREAM)

;ФУНКЦИЯ СУММИРУЕТ ВСЕ ОЦЕНКИ СТУДЕНТА

(DEFUN SUM_GRADE (LST)

(COND

((NULL LST) 0)

((ATOM LST) LST)

(T (+ (SUM_GRADE (CAR LST)) (SUM_GRADE (CDR LST))))))

;ФУНКЦИЯ ВОЗВРАЩАЕТ ИЗ СПИСКА СТУДЕНТА И ЕГО ОЦЕНОК, ТОЛЬКО ОЦЕНКИ

(DEFUN GET_GRADE (LST)

(CADR LST))

;ПОЛУЧАЕМ СУММУ ОЦЕНОК

(SETQ GRADE (MAPCAR 'SUM_GRADE (MAPCAR 'GET_GRADE STUDENTS)))

;ПОИСК ОТЛИЧНИКА

;ЕСЛИ СУММА ОЦЕНОК = 20 - ПЕЧАТАЕМ OTLICHNIK

(DEFUN SET_BEST_STUD (STUD GR)

(IF (= GR 20)

(APPEND STUD 'OTLICHNIK)

STUD))

;ПОИСК НЕУСПЕВАЮЩЕГО СТУДЕНТА

;ЕСЛИ ЕСТЬ ХОТЬ ОДНА 2 - ПЕЧАТАЕМ NEUSPEVAUWII

(DEFUN SET_BAD_STUD (LST)

(COND

((NULL LST) NIL)

((= (CAR LST) 2) 'NEUSPEVAUWII)

(T (SET_BAD_STUD (CDR LST)))))

;УСТАНАВЛИВАЕМ СТАТУС ОТЛИЧНИКА

(SETQ STUDENTS (MAPCAR 'SET_BEST_STUD STUDENTS GRADE))

;ПОЛУЧАЕМ ОЦЕНКИ

(SETQ STATUS (MAPCAR 'SET_BAD_STUD (MAPCAR 'GET_GRADE STUDENTS)))

;УСТАНАВЛИВАЕМ СТАТУС НЕУСПЕВАЮЩЕГО

(SETQ STUDENTS (MAPCAR 'CONS STUDENTS STATUS))

;OUTPUT-STREAM ПОТОК ВЫВОДА

(SETQ OUTPUT-STREAM (OPEN " D:\\STUD_INFO.TXT":DIRECTION:OUTPUT))

;ПЕЧАТАЕМ ПРОАНАЛИЗИРОВАННЫЙ СПИСОК В ФАЙЛ

(PRINT STUDENTS OUTPUT-STREAM)

;ЗАКРЫВАЕМ ФАЙЛ

(CLOSE OUTPUT-STREAM)







Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных