Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод отката после неудачи 
:(
    Опции темы
kaizer131
Дата 13.9.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.4.2009

Репутация: нет
Всего: нет



Подскажите что не так .
выполняю задание в  Visual Prolog 5.2

Даны сведения о марках машин: 
1) Марка; 
2) год начала выпуска; 
3) фирма-изготовитель; 
4) технические характеристики (структурированный домен): 
a) мощность двигателя (лошадиных сил); 
b) объем двигателя (литров); 
c) вид топлива; 
d) максимальная скорость 
5) цена в USD. 

Задание:
Сформулируйте правила для следующих запросов (в режиме вычисления цели): 
1. По марке машины напечатать ее технические характеристики,  используя метод отсечения и отката. 
2. По марке машины напечатать ее технические характеристики,  используя метод отката. 
3. Написать правило, которое:
- запрашивает наименование фирмы изготовителя с клавиатуры,
- затем выводит все наименования машин и цену, изготовленных данной фирмой, 
- и опять запрашивает наименование фирмы, до тех пора, пока не введем пустую строку.

Первый и второй пункт вроде выполнен правильно, но после второго вызова появляется yes, и программа дальше не идёт игнорируя третий вызов 
Вот мой код,

Код

domains
  Марка = string
  Выпуск = integer
  Производитель = string
  Характеристики=Характеристики(integer Мощность, integer Объём, string Топливо, integer Макс_скорость)  
  Цена = integer

predicates
nondeterm машина (марка,выпуск,производитель, характеристики,цена).
nondeterm print
nondeterm print2
nondeterm repeat
nondeterm echo

clauses
/* факты и правила*/
машина ("ауди102",1990,"ауди", характеристики(100, 80," дизель", 220 ), 150000).
машина ("белорусь",1985,"завод", характеристики(1, 8,"соляра", 22 ), 15).
машина ("ваз2120",2010,"автоваз", характеристики(600, 180,"бензин", 320 ), 99999999).
машина ("nasa",2000,"сша", характеристики(1000, 800, "спирт", 272 ), 3000000).
машина ("ауди22",1997,"ауди", характеристики(170, 180,"бензин", 220 ), 150000).



repeat.
repeat:-repeat.
echo:-repeat,readln(Запрос),
машина (Марка,Выпуск,Производитель, Характеристики,Цена),
Марка=Запрос,readln(String),
write(Марка,  Характеристики  ),nl,
String= " ".

print:-readln(Запрос),
машина (Марка,Выпуск,Производитель, Характеристики,Цена),
Марка=Запрос,
write(Марка,  Характеристики  ),nl,fail.

print2:-!,readln(Запрос),
машина (Марка,Выпуск,Производитель, Характеристики,Цена),
Марка=Запрос,
write(Марка,  Характеристики  ),nl.

goal
/* запросы к программе*/
write("Введите марку машины, которую ищете, используя откат : "),
print;

write("Введите марку машины, которую ищете методом отсечения и отката: "),
print2;

write("Введите наименование фирмы  : "),
echo.




думаю я что - то неправильно понимаю в рекурсии Пролога



PM MAIL   Вверх
kaizer131
Дата 14.9.2010, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.4.2009

Репутация: нет
Всего: нет



Задача решена.
осталось реализовать пункт
Цитата

до тех пора, пока не введем пустую строку


Кто нибудь может дать совет по его реализации?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0384 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.