ТОР 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) Не нашли, что искали? Воспользуйтесь поиском:
|