Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog

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

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

Листинг программы
  1. DOMAINS
  2. l_i=integer*
  3. l_s=string*
  4. i=integer
  5. s=string
  6. c=char
  7. structura=str(i,s) %Структура Порода-Параметры и его список
  8. l_str=structura*
  9. file=myfile
  10. DATABASE
  11. rule(s,l_i)
  12. cond(structura)
  13. PREDICATES
  14. nondeterm repeat %Создание цикла
  15. nondeterm expert %Главный предикат
  16. nondeterm make_menu
  17. nondeterm process(c)
  18. nondeterm load_basa
  19. nondeterm save_basa
  20. nondeterm clear_basa
  21. nondeterm consulting(s,l_str,l_i)
  22. nondeterm transform(c,c) %Преобразование символов
  23. nondeterm add_list(c,i,l_i,l_i) %Добавление элемента к списку
  24. nondeterm find_poroda(s,l_i) %Поиск породы собаки
  25. nondeterm ravno(l_i,l_i) %Проверка равенства списков
  26. nondeterm belong(i,l_i) %Проверка принадлежности элемента списка
  27. nondeterm title %Заголовок экспертной системы
  28. CLAUSES
  29. %Создание меню
  30. expert:- title, load_basa,
  31. make_menu, save_basa, clear_basa.
  32. make_menu:- repeat,
  33. write("***********************************************"),nl,nl,
  34. write("Выберите один из пунктов меню:"),nl,nl,
  35. write("1. Консультация."),nl,
  36. write("2. Просмотр базы знаний."),nl,
  37. write("3. Добавление нового знания."),nl,
  38. write("4. Удаление знаниня."),nl,
  39. write(""),nl,
  40. write(" 0 - Выход."),nl,nl,
  41. write("***********************************************"),nl,nl,
  42. readchar(C), process(C),!.
  43. %Консультция
  44. process('1'):- save_basa, clear_basa, load_basa,
  45. nl,write(""),nl,
  46. findall(Str,cond(Str),List),
  47. consulting(" ",List,Cond),
  48. find_poroda(Poroda,Cond),
  49. nl,write(" ",Poroda),nl,nl,
  50. make_menu.
  51. %Просмотр базы знаний
  52. process('2'):- save_basa, clear_basa, load_basa,
  53. existfile("BasaZnanij.pro"),
  54. file_str("BasaZnanij.pro",Str),
  55. write(Str),nl,
  56. make_menu.
  57. %Добавление нового знания
  58. process('3'):- save_basa, clear_basa, load_basa,
  59. nl,write(" Введите название породы собаки для добавления: "),
  60. readln(Poroda),nl,
  61. findall(Str,cond(Str),List),
  62. consulting(Poroda,List,Cond),
  63. assertz(rule(Poroda,Cond)),nl,nl,
  64. write("Добавление прошло успешно."),nl,nl,
  65. make_menu;
  66. nl,write("Ошибка при вводе!!!"),
  67. make_menu.
  68. %Удаление знания
  69. process('4'):- save_basa, clear_basa, load_basa,
  70. nl,write("Введите название породы собаки для удаления: "),
  71. readln(Poroda),nl,
  72. retract(rule(Poroda,_)),
  73. write("Удаление прошло успешно !"),nl,nl,
  74. make_menu;
  75. nl,write("Ошибка при вводе !!!"),nl,nl,
  76. make_menu.
  77. %Выход
  78. process('0'):-write("Выйти из программы??? (y/n) "),
  79. readln(Ans),
  80. upper_lower(Ans,Ans1),
  81. frontchar(Ans1,'y',_),!.
  82. process(_):-
  83. write("Ошибка при вводе."),nl,!.
  84. repeat.
  85. %Ошибка при загрузке
  86. repeat:-repeat.
  87. load_basa:-consult("BasaZnanij.pro"),!.
  88. load_basa:-write(" Ошибка при загрузке правил из файла!").
  89. save_basa:-save("BasaZnanij.pro").
  90. title:-write("***************ЭКСПЕРТНАЯ СИСТЕМА***************"),nl,
  91. write("**********ОПРЕДЕЛЕНИЕ ПОРОДЫ СОБАК*********"),nl,nl.
  92. clear_basa:- retractall(rule(_,_)),
  93. retractall(cond(_)).
  94. %Консультация
  95. consulting(_,[],[]).
  96. consulting(Poroda,[str(N,Cond)|T1],List1):-
  97. nl,
  98. write(Cond,"? (д/н)"),nl,
  99. readchar(Answer1),
  100. write(Answer1),
  101. transform(Answer1,Answer2),
  102. consulting(Poroda,T1,List2),
  103. add_list(Answer2,N,List2,List1),!.
  104. %Преобразование сомволов
  105. transform('д','y').
  106. transform('Д','y').
  107. transform('Y','y').
  108. transform('y','y').
  109. transform('1','y').
  110. transform(_,'n').
  111. %Поиск породы, сравнение равенства списков
  112. add_list('y',H,T,[H|T]):-!.
  113. add_list(_,_,List,List).
  114. find_poroda(Str,Cond1):-
  115. rule(Poroda,Cond2),
  116. ravno(Cond1,Cond2),
  117. ravno(Cond2,Cond1),
  118. concat(Poroda," является искомой породой собаки.",Str),!.
  119. find_poroda("Извините, но соответствующей параметрам породы не найдено на нашей планете :(",_).
  120. ravno([],_).
  121. %Проверка принадлежности элемента
  122. ravno([H|T],L):- belong(H,L), ravno(T,L).
  123. belong(El,[El|_]).
  124. belong(El,[H|T]):- El<>H,
  125. belong(El,T).
  126. GOAL
  127. expert.

Решение задачи: «Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog»

textual
Листинг программы
  1. diff base-dogs-org.pro base-dogs.pro
  2. 9c9
  3. < file=myfile
  4. ---
  5. > %file=myfile
  6. 11c11
  7. < DATABASE
  8. ---
  9. > GLOBAL FACTS

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


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

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

9   голосов , оценка 4.444 из 5

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

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

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