Ошибки в БД - Prolog

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, что то запутался, помогите пожайлуйста.
Листинг программы
  1. Domains
  2. int=integer
  3. str=string
  4. list=int*
  5. name = string.
  6. mark = integer.
  7. file=f.
  8. Database
  9. worker(name,mark)
  10. Predicates
  11. menu
  12. start
  13. sum(list,int)
  14. avg(list,int)
  15. summ
  16. Clauses
  17. summ:-
  18. sum([], 0).
  19. sum([H|T], S) :-sum(T, S_T),S = S_T + H.
  20. avg(L,S):-sum(L,S).
  21. menu:-
  22. findall(X,worker(_,X),L),
  23. avg(L,K),write("sredn",K, " : ").
  24.  
  25. start:-
  26. existfile("student.ddb"),!,
  27. consult("student.ddb"),
  28. menu.
  29. start:-
  30. openwrite(f,"student.ddb"),
  31. closefile(f),
  32. menu.
  33. GOAL
  34. Start
косяк в разделе меню
Суть задания в том что бы взять из базы 2 переменную, сложить и вывести.
вот поправил
Листинг программы
  1. Domains
  2. int=integer
  3. str=string
  4. list=int*
  5. name = string
  6. mark = integer
  7. file=f.
  8. Database
  9. worker(name,mark)
  10. Predicates
  11. menu
  12. summ
  13. start
  14. sum(list,int)
  15. avg(list,int)
  16. Clauses
  17. summ:-
  18. sum([], 0).
  19. sum([H|T], S) :-sum(T, S_T),S = S_T + H.
  20. avg(L,S):-sum(L,S).
  21. menu:-
  22. findall(X,worker(_,X),L),
  23. avg(L,K),write("sredn",K),
  24. summ.
  25.  
  26. start:-
  27. existfile("student.ddb"),!,
  28. consult("student.ddb"),
  29. menu.
  30. start:-
  31. openwrite(f,"student.ddb"),
  32. closefile(f),
  33. menu.
  34. GOAL
  35. Start
но все равно ругается на https://image.darkteam.net/image.php?di=JYON

Решение задачи: «Ошибки в БД»

textual
Листинг программы
  1. domains
  2.   mark = integer
  3.   listint = integer*
  4.   listmark = mark*
  5.  
  6. predicates
  7.   sum(listmark, mark)
  8.   sum(listint, integer)
  9.  
  10. clauses
  11.   sum([], 0).
  12.   sum([H|T], S) :-
  13.       sum(T, S_T),
  14.       S = S_T + H.

Объяснение кода листинга программы

  1. В коде используется язык программирования Prolog.
  2. Код содержит три домена: mark (целое число), listint (целое число) и listmark (mark).
  3. Также в коде определены три предиката: sum(listmark, mark), sum(listint, integer) и sum(listmark, S) где S - это переменная.
  4. Существует три утверждения (клаузы) для предиката sum:
    • sum([], 0). - если список пустой, то сумма равна 0.
    • sum([H|T], S) :- sum(T, S_T), S = S_T + H. - если в списке есть элементы, то сумма равна сумме элементов списка, начиная с последнего, плюс первый элемент.
  5. Значения переменных:
    • H - переменная, обозначающая текущий элемент списка.
    • T - переменная, обозначающая список без текущего элемента.
    • S - переменная, обозначающая сумму элементов списка.
    • S_T - переменная, обозначающая сумму элементов списка T.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут