Создание динамической БД: результаты сессии данной группы студентов - Prolog
Формулировка задачи:
Задание. Динамическая база данных содержит информацию о результатах сессии данной группы студентов в виде утверждений следующих видов: математика (фамилия_и_о, оценка), физика (фамилия_и_о, оценка), химия (фамилия_и_о, оценка), информатика (фамилия_и_о,оценка). Предполагается, что в группе N студентов и все они оценки по всем предметам (5,4,3 или 2). В динамической базе данных (ДБД) для каждого студента может хранится информация об одной или нескольких оценках (т.е несколько фактов) по каждому предмету, что связано с возможными пересдачами экзаменов.
Требуется написать программу, создающую ДБД и предоставляющую возможность ее изменения в процессе работы, а также формирующую без дублирования (т.е одна и та же фамилия дважды не встречается) список студентов, удовлетворяющих следующим условиям.
1. Сдавшие сессию и имеющие три оценки отлично.
Программа работает, но выводит всех студентов, у которых есть хотя бы одна пятерка. В чем причина не могу понять.
Решение задачи: «Создание динамической БД: результаты сессии данной группы студентов»
textual
Листинг программы
dstud(X,P1,O1), O1=5, dstud(X,P2,O2), O2=5, P1 <> P2, dstud(X,P3,O3), O3=5, P1 <> P3, P2 <> P3
Объяснение кода листинга программы
В данном коде происходит следующее:
- Создается факт
dstud(X,P1,O1), гдеX- идентификатор группы студентов,P1- первый проход по данной группе студентов,O1- результаты этого прохода (возможно, оценка). - Затем факт
dstud(X,P1,O1)используется для установления значения переменнойO1равным 5. - Далее, создается второй проход по группе студентов
P2и результаты этого прохода (возможно, оценка) присваиваются переменнойO2. - Переменная
O2устанавливается равной 5. - Проверяется условие
P1 <> P2, что означает, что первый и второй проходы различаются. - Затем, создается третий проход по группе студентов
P3и результаты этого прохода (возможно, оценка) присваиваются переменнойO3. - Переменная
O3устанавливается равной 5. - Проверяется условие
P1 <> P3, что означает, что первый и третий проходы различаются. - Также проверяется условие
P2 <> P3, что означает, что второй и третий проходы различаются. Таким образом, данный код создает факты о проходах по группе студентов и проверяет их на различие. Возможно, это связано с созданием динамической базы данных для хранения результатов сессии группы студентов.