Ответ в теме: База данных студентов. Вычисление среднего балла

      Комментарии к записи Ответ в теме: База данных студентов. Вычисление среднего балла отключены
#1772

Я чуть-чуть поправил Ваш код. Не проверял что получилось, но в предикате вычисления суммы у вас была ошибка — использовалась неинициализированная переменная.
При вычислении среднего арифметического вы не использовали результат вычислений, и вообще, для непустого списка ничего вычисляться бы не стало… (я исправил)

Я не знаю что вы там пробуете, мне кажется база данных должна быть примерно такой:

оценка(математика, 'Петров', 3).
оценка(физика, 'Петров', 4).
оценка(химия, 'Петров', 5).
оценка(математика, 'Сидоров', 4).

Если база уже содержит балл студента, то можно выкинуть лишнюю информацию — группа и курс у тебя ведь все равно нигде не используются….
Выглядеть это может так:

	
студент(петров, 40).
студент(сидоров, 90).
студент(иванов, 20).
 
градация(все, 0, 100).
градация(двоечник, 0, 39).
градация(троечник, 40, 60).
градация(хорошист, 61, 80).
градация(отличник, 81, 100).
 
список_студентов(Градация, Студенты):-
  градация(Градация, Нижний_балл, Верхний_балл), !,
  findall(
    Фамилия, (
      студент(Фамилия, Балл),
      Балл >= Нижний_балл,
      Балл =< Верхний_балл
    ),
    Студенты
  ).

Примеры запросов:

?- список_студентов(двоечник, Студенты).
Студенты = [иванов].
 
?- список_студентов(все, Студенты).
Студенты = [петров, сидоров, иванов].