Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Нужно перевести код из Turbo Prolog в Visual Prolog 5.2
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Irina1094 Irina1094 вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2014
По умолчанию Нужно перевести код из Turbo Prolog в Visual Prolog 5.2 - 28.11.2014, 12:28

prolog Код:
DOMAINS
l_i=integer*
l_s=string*
i=integer
s=string
c=char
structura=str(i,s) %Структура Порода-Параметры и его список
l_str=structura*
file=myfile
 
DATABASE
rule(s,l_i)
cond(structura)
 
PREDICATES
nondeterm repeat %Создание цикла
nondeterm expert %Главный предикат
nondeterm make_menu
nondeterm process(c)
nondeterm load_basa
nondeterm save_basa
nondeterm clear_basa
nondeterm consulting(s,l_str,l_i)
nondeterm transform(c,c) %Преобразование символов
nondeterm add_list(c,i,l_i,l_i) %Добавление элемента к списку
nondeterm find_poroda(s,l_i) %Поиск породы собаки
nondeterm ravno(l_i,l_i) %Проверка равенства списков
nondeterm belong(i,l_i) %Проверка принадлежности элемента списка
nondeterm title %Заголовок экспертной системы
 
CLAUSES
%Создание меню
expert:- title, load_basa,
make_menu, save_basa, clear_basa.
make_menu:- repeat,
write("***********************************************"),nl,nl,
write("Выберите один из пунктов меню:"),nl,nl,
write("1. Консультация."),nl,
write("2. Просмотр базы знаний."),nl,
write("3. Добавление нового знания."),nl,
write("4. Удаление знаниня."),nl,
write(""),nl,
write(" 0 - Выход."),nl,nl,
write("***********************************************"),nl,nl,
readchar(C), process(C),!.
 
%Консультция
process('1'):- save_basa, clear_basa, load_basa,
nl,write(""),nl,
findall(Str,cond(Str),List),
consulting(" ",List,Cond),
find_poroda(Poroda,Cond),
nl,write(" ",Poroda),nl,nl,
make_menu.
 
%Просмотр базы знаний
process('2'):- save_basa, clear_basa, load_basa,
existfile("BasaZnanij.pro"),
file_str("BasaZnanij.pro",Str),
write(Str),nl,
make_menu.
 
%Добавление нового знания
process('3'):- save_basa, clear_basa, load_basa,
nl,write(" Введите название породы собаки для добавления: "),
readln(Poroda),nl,
findall(Str,cond(Str),List),
consulting(Poroda,List,Cond),
assertz(rule(Poroda,Cond)),nl,nl,
write("Добавление прошло успешно."),nl,nl,
make_menu;
nl,write("Ошибка при вводе!!!"),
make_menu.
 
%Удаление знания
process('4'):- save_basa, clear_basa, load_basa,
nl,write("Введите название породы собаки для удаления: "),
readln(Poroda),nl,
retract(rule(Poroda,_)),
write("Удаление прошло успешно !"),nl,nl,
make_menu;
nl,write("Ошибка при вводе !!!"),nl,nl,
make_menu.
 
%Выход
process('0'):-write("Выйти из программы??? (y/n) "),
readln(Ans),
upper_lower(Ans,Ans1),
frontchar(Ans1,'y',_),!.
process(_):-
write("Ошибка при вводе."),nl,!.
repeat.
 
%Ошибка при загрузке
repeat:-repeat.
load_basa:-consult("BasaZnanij.pro"),!.
load_basa:-write(" Ошибка при загрузке правил из файла!").
save_basa:-save("BasaZnanij.pro").
title:-write("***************ЭКСПЕРТНАЯ СИСТЕМА***************"),nl,
write("**********ОПРЕДЕЛЕНИЕ ПОРОДЫ СОБАК*********"),nl,nl.
clear_basa:- retractall(rule(_,_)),
retractall(cond(_)).
 
%Консультация
consulting(_,[],[]).
consulting(Poroda,[str(N,Cond)|T1],List1):-
nl,
write(Cond,"? (д/н)"),nl,
readchar(Answer1),
write(Answer1),
transform(Answer1,Answer2),
consulting(Poroda,T1,List2),
add_list(Answer2,N,List2,List1),!.
 
%Преобразование сомволов
transform('д','y').
transform('Д','y').
transform('Y','y').
transform('y','y').
transform('1','y').
transform(_,'n').
 
%Поиск породы, сравнение равенства списков
add_list('y',H,T,[H|T]):-!.
add_list(_,_,List,List).
find_poroda(Str,Cond1):-
rule(Poroda,Cond2),
ravno(Cond1,Cond2),
ravno(Cond2,Cond1),
concat(Poroda," является искомой породой собаки.",Str),!.
find_poroda("Извините, но соответствующей параметрам породы не найдено на нашей планете :(",_).
ravno([],_).
 
%Проверка принадлежности элемента
ravno([H|T],L):- belong(H,L), ravno(T,L).
belong(El,[El|_]).
belong(El,[H|T]):- El<>H,
belong(El,T).
 
GOAL
expert.
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 28.11.2014, 21:44

А без "перевода" разве не работает?
Ответить с цитированием
  (#3 (permalink)) Старый
Irina1094 Irina1094 вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2014
По умолчанию 29.11.2014, 09:09

Я не понимаю, почему, но она правда не работает.
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 29.11.2014, 17:09

1. Запускать надо в консольном проекте VIP5.2.
2. На что ругается, что пишет?
Ответить с цитированием
  (#5 (permalink)) Старый
Irina1094 Irina1094 вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2014
По умолчанию 30.11.2014, 10:34

Я в нем и запускаю.
При выборе первых двух пунктов меню, ничего не происходит, разве что заново выскакивает меню, файл с базой почему-то сам очищается... Я ничего не понимаю...
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 30.11.2014, 18:35

Ага, понятно. программа на самом деле компилируется и работает. Но работает не так, как Вам бы хотелось.
1. Вы создали тему с названием, которое ввело меня в заблуждение.
2. Ваша прога работает неправильно и Вам бы хотелось иметь правильную функциональность. Какую именно?
Ответить с цитированием
  (#7 (permalink)) Старый
Irina1094 Irina1094 вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2014
По умолчанию 30.11.2014, 19:16

При запуске программы выводится меню. При выборе 1 пункта должна проводиться консультация, исходя из результатов которой, выводится порода собаки. При выборе 2 пункта меню - возможность просмотреть базу данных. 3 - добавление новой породы. 4 - удаление.
Но кроме кнопки "Выход у меня ничего не работает исправно"
Ответить с цитированием
  (#8 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 30.11.2014, 21:55

У Вас есть файл BasaZnanij.pro? Он должен находиться рядом с exe-шником.
Ответить с цитированием
  (#9 (permalink)) Старый
Irina1094 Irina1094 вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2014
По умолчанию 30.11.2014, 22:52

Да. Вот он.
Вложения
Тип файла: zip BasaZnanij.zip (721 байт, 13 просмотров)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать программу из SWI-Prolog в Visual Prolog enulinum Задания за деньги 1 29.05.2014 02:32
Перенос программ из {TurboProlog.....Visual Prolog 5.2} в Visual Prolog 7 imported_Jenny_ Prolog 30 25.03.2013 19:15
Нужно перевести код из Turbo Prolog в Visual Prolog GGHz Prolog 7 08.12.2012 19:46
код из turbo prolog в visual prolog posleg Prolog 4 13.06.2011 00:33
Помогите переделать задачу из Turbo Prolog в Visual Prolog 5 imported_Anneta Prolog 3 23.12.2010 22:59
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) olik567 Prolog 4 07.10.2009 17:46
Возможно ли перевести эту программу на Visual Prolog? byshevski Prolog 5 19.11.2008 16:47
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) Игоревна Задания за деньги 16 04.01.2008 17:20
Нужно решить задачу на TURBO-PROLOG Надюшка Prolog 6 12.10.2006 22:28
Отличие SWI-Prolog от Turbo Prolog ndn Prolog 1 25.01.2006 12:47
Как переделать Prolog-D на Turbo-Prolog Anonymous Prolog 19 02.01.2004 20:05



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов