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

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

questioner
Участник

студент(Курс,Группа,Фамилия,Баллы).
 
%Список студентов по ключу
печать:-
    read(Курс), read(Группа),
    студент(Курс,Группа,Фамилия,Баллы),
    write(Фамилия), write(" "), write(Баллы), nl.
 
%Список неуспевающих студентов
неуспевающие_студенты(Ф):-
    read(Курс), read(Группа),
    студент(Курс,Группа,Фамилия,Баллы),
    Баллы<40.  %работает,но это не список
 
список_студентов(Список):-
  read(Курс), read(Группа),
  findall(Фамилия,студент(Курс,Группа,Фамилия,Баллы), Список),!.
 
%не знаю где проверять условие на Баллы,чтоб добавлял в список только тех,баллы которых %меньше 40. Наподобие можно сформировать список отличников.
список_неуспевающих_студентов(Список):-
  read(Курс), read(Группа),
  студент(Курс, Группа, _Фамилия, Баллы),
  Баллы<40, findall(Фамилия, студент(Курс,Группа,Фамилия,Баллы), Список),!.
 
%ещё так пробовал, просто не могу понять куда это
%условие вставить
список_неуспевающих_студентов(Список):-
  read(Курс), read(Группа),
  findall(Фамилия, студент(Курс, Группа, Фамилия, Баллы), Список),
  Баллы<40,!.
 
список_баллов(Баллы):-
  read(Курс), read(Группа),
  findall(Баллы, студент(Курс, Группа, _Фамилия, Баллы), Баллы),!.
 
сумма([],0).
сумма([H|T],S):-
  number(H), сумма(T,S1),
  S is S1+H.
 
среднее_арифметическое([],0).
среднее_арифметическое(Список, Среднее_арифметическое).
  сумма(Список, Сумма),
  length(Список, Длина),
  Среднее_арифметическое is Сумма / Длина.