Код Turbo Prolog переделать в Visual Prolog 5.2

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

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

Помогите пожалуйста переделать код Turbo Prolog в Visual Prolog 5.2
Листинг программы
  1. domains
  2. st=st(string,real,real,real,real)
  3. st1=st1(string,real)
  4. List1=st1*
  5. List=st*
  6. database
  7. dstudent(st)
  8. predicates
  9. result
  10. repeat
  11. menu
  12. point(char)
  13. print_av_down(List1)
  14. max_el(List1,st1)
  15. del_el(List1,st1,List1)
  16. av_mark(List1,real,integer)
  17. preobr(List,List1)
  18. print_al_down(List1,real)
  19. sort(List1,List1)
  20. ins(st1,List1,List1)
  21. retract_all
  22. print_bad
  23. clauses
  24. repeat.
  25. repeat:-repeat.
  26. retract_all:-retract(dstudent(_)),fail.
  27. retract_all.
  28. menu:-clearwindow,
  29. writeMain menu»),nl,
  30. write1-Add students to database»),nl,
  31. write2-View list of students by average mark»),nl,
  32. write3-View list of students sorted by alphabet with marks higher average mark»),nl,
  33. write4-View list of students with bad marks»),nl,
  34. write5-View database»),nl,
  35. write6-About program»),nl,
  36. write0-Exit from program»),nl,
  37. writeYour choice is: «),readchar(X),point(X),!,fail.
  38. point('1'):-clearwindow,writeInput student's surname: «),
  39. readln(Surname),write(«Input first mark: «),readint(Mark1),
  40. write(«Input second mark:»),readint(Mark2),
  41. write(«Input third mark: «),readint(Mark3),
  42. write(«Input fourth mark: «),readint(Mark4),
  43. assertz(dstudent(st(Surname,Mark1,Mark2,Mark3,Mark4))),fail.
  44. point('2'):-clearwindow,write(«Surname \t Average mark»),nl,
  45. findall(S,dstudent(S),List1),preobr(List1,List),print_av_down(List),
  46. nl,nl,write(«Press any key»),readchar(_).
  47. point('3'):-clearwindow,write(«Surname \t Average mark»),nl,
  48. findall(S,dstudent(S),List1),preobr(List1,List),av_mark(List,Sum,N),
  49. sort(List,List2),
  50. AvMark=Sum/N,print_al_down(List2,AvMark),nl,nl,
  51. write(«Average mark is:»,AvMark),nl,nl,
  52. write(«Press any key»),
  53. readchar(_).
  54. point('4'):-clearwindow,write(«Surname \t marks»),nl,print_bad,nl,nl,
  55. write(«Press any key»),readchar(_).
  56. point('5'):-clearwindow,save(«Database»),file_str(«Database»,Str),
  57. write(«Surname \t Average marks»),nl,write(Str),nl,nl,
  58. write(«Press any key»),readchar(_).
  59. point('6'):-clearwindow,
  60. write(«This program has been made by student of BSPA Khramtsov V.V. group 107219»),
  61. nl,nl,write(«Press any key»),readchar(_).
  62. point('0'):-save(«Database»),retract_all,removewindow,exit.
  63. print_bad:-dstudent(st(Surname,Mark1,Mark2,Mark3,Mark4)),Mark1=2,
  64. write(Surname,»\t»,Mark1,» «,Mark2,» «,Mark3,» «,Mark4),nl,fail.
  65. print_bad:-dstudent(st(Surname,Mark1,Mark2,Mark3,Mark4)),Mark2=2,
  66. write(Surname,»\t»,Mark1,» «,Mark2,» «,Mark3,» «,Mark4),nl,fail.
  67. print_bad:-dstudent(st(Surname,Mark1,Mark2,Mark3,Mark4)),Mark3=2,
  68. write(Surname,»\t»,Mark1,» «,Mark2,» «,Mark3,» «,Mark4),nl,fail.
  69. print_bad:-dstudent(st(Surname,Mark1,Mark2,Mark3,Mark4)),Mark4=2,
  70. write(Surname,»\t»,Mark1,» «,Mark2,» «,Mark3,» «,Mark4),nl,fail.
  71. print_bad.
  72. print_av_down([]).
  73. print_av_down(List):-max_el(List,El),del_el(List,El,List1),
  74. El=st1(Surname,AvMark),write(Surname,» «,AvMark),nl,
  75. print_av_down(List1).
  76. max_el([H],H).
  77. max_el([H|T],El):-max_el(T,El1),El1=st1(_,AvMark),H=st1(_,AvMark1),
  78. AvMark>AvMark1,El=El1.
  79. max_el([H|T],El):-max_el(T,El1),El1=st1(_,AvMark),H=st1(_,AvMark1),
  80. AvMark<=AvMark1,El=H.
  81. del_el([],_,[]):-!.
  82. del_el([H|T],El,T):-H=El,!.
  83. del_el([H|T],El,[H|T1]):-del_el(T,El,T1).
  84. preobr([],[]).
  85. preobr([H|T],[H1|T1]):-preobr(T,T1),H=st(Surname,Mark1,Mark2,Mark3,Mark4),
  86. AvMark=(Mark1+Mark2+Mark3+Mark4)/4,H1=st1(Surname,AvMark).
  87. av_mark([],0,0).
  88. av_mark([H|T],Sum,N):-av_mark(T,Sum1,N1),N=N1+1,H=st1(_,AvMark),
  89. Sum=Sum1+AvMark.
  90. print_al_down([],_).
  91. print_al_down([H|T],AvMark):-H=st1(Surname,AvMark1),AvMark1>AvMark,
  92. write(Surname,»\t»,AvMark1),nl,print_al_down(T,AvMark).
  93. print_al_down([_|T],AvMark):-print_al_down(T,AvMark).
  94. sort([],[]).
  95. sort([H|T],After):-sort(T,Before),ins(H,Before,After).
  96. ins(E,[],[E]).
  97. ins(E,[H|T],[H|T1]):-H=st1(Surname,_),E=st1(Surname1,_),
  98. Surname<Surname1,ins(E,T,T1).
  99. ins(E,[H|T],[E,H|T]).
  100. result:-existfile(«Database»),consult(«Database»),
  101. makewindow(1,7,7,»Database»,0,0,25,80),repeat,menu.
  102. result:-makewindow(1,7,7,»Database»,0,0,25,80),repeat,menu.
  103. goal
  104. result.

Решение задачи: «Код Turbo Prolog переделать в Visual Prolog 5.2»

textual
Листинг программы
  1. result :- repeat, menu.

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

Код на языке Prolog:

  1. result :- repeat, menu. Описание действий в коде:
  2. Результатом выполнения программы является вывод на экран меню.
  3. Действие repeat используется для повторного выполнения программы.
  4. Переменная menu содержит код меню программы.

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


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

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

10   голосов , оценка 3.9 из 5

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

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

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