Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
39 / 26 / 18
Регистрация: 30.09.2014
Сообщений: 142
1

Дизъюнкция целей: вывести фамилии студентов, родившихся зимой

23.09.2016, 15:19. Показов 1304. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Стоит следующая задача на Turbo Prolog: о студентах известны их ФИО и даты рождения. Нужно вывести студентов, родившихся зимой. И собственно проблема в том, что порядковые номера зимних месяцев не идут последовательно и задать их промежутком невозможно,а дизъюнкция целей не работает:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
domains
    i = integer
    s = symbol
predicates
    student(s,i,i,i)
    search.
goal
    search.
clauses
    student("February Student",23,2,1997).
    student("January Student",7,1,1995).
    student("December Student",31,12,1996).
    student("March Student",2,3,1998).
    student("October Student",20,10,1994).
    student("November Student",12,11,1995).
 
    search:-student(X,A,Y,Z), (Y=1; Y=2; Y=12), write(X," ",A,".",Y,".",Z),nl,fail.
Відает ошибку "')' or ',' expected) в последней строке, где Y=1. Как в таком случае правильно организовать логическое "ИЛИ"?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2016, 15:19
Ответы с готовыми решениями:

Напечатать фамилии студентов, родившихся осенью
Помогите написать программу на паскале, заранее благодарен Запись имеет четыре поля, содержащие...

Структуры: напечатать фамилии студентов, родившихся 15-го числа
Помогите пожалуйста решить эту задачу) буду очень благодарен!)) Запись имеет четыре поля,...

Напечатать фамилии студентов, родившихся под знаком Рыбы
Из списка студентов группы, где приведены сведения: фамилия, инициалы, год, месяц и день...

Распечатать фамилии студентов родившихся под знаком Овна
В записи содержится ФИО студента, дата рождения (год, месяц, число), его средний балл. Распечатать...

9
794 / 598 / 156
Регистрация: 07.10.2013
Сообщений: 1,327
23.09.2016, 16:15 2
Цитата Сообщение от artem2302 Посмотреть сообщение
а дизъюнкция целей не работает
Цитата Сообщение от artem2302 Посмотреть сообщение
Как в таком случае правильно организовать логическое "ИЛИ"?
Выдает ошибку, причём здесь всё выше процитированное?
Цитата Сообщение от artem2302 Посмотреть сообщение
predicates
student(s,i,i,i)
search.
Зачем здесь точка в конце?

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
domains
    i = integer
    s = symbol
predicates
    student(s,i,i,i)
clauses
    student("February Student",23,2,1997).
    student("January Student",7,1,1995).
    student("December Student",31,12,1996).
    student("March Student",2,3,1998).
    student("October Student",20,10,1994).
    student("November Student",12,11,1995).
goal
    student(X,A,Y,Z), (Y=1; Y=2; Y=12), write(X," ",A,".",Y,".",Z),nl,fail.
Добавлено через 5 минут

Не по теме:

опять Стоит следующая задача на Turbo Prolog


Не по теме:

:wall: когда уже она уже стоять перестанет, где компы с DOS ещё пользуют? :tomatos:

2
39 / 26 / 18
Регистрация: 30.09.2014
Сообщений: 142
23.09.2016, 16:21  [ТС] 3
Попробовал, ошибка осталась

Не по теме:

arlat,

Цитата Сообщение от arlat Посмотреть сообщение
когда уже она уже стоять перестанет, где компы с DOS ещё пользуют?
там же, где пользуют Turbo C, TASM и прочие радости 80-х

0
794 / 598 / 156
Регистрация: 07.10.2013
Сообщений: 1,327
23.09.2016, 16:32 4
Цитата Сообщение от artem2302 Посмотреть сообщение
Попробовал, ошибка осталась
скриншот в студию...
у меня турбо нет, но народ подтянется, подскажет, в логике кода ошибок нет
Миниатюры
Дизъюнкция целей: вывести фамилии студентов, родившихся зимой  
0
39 / 26 / 18
Регистрация: 30.09.2014
Сообщений: 142
23.09.2016, 16:43  [ТС] 5
Как-то так
Миниатюры
Дизъюнкция целей: вывести фамилии студентов, родившихся зимой  
0
794 / 598 / 156
Регистрация: 07.10.2013
Сообщений: 1,327
23.09.2016, 16:54 6
во! ещё и под dos-box
0
39 / 26 / 18
Регистрация: 30.09.2014
Сообщений: 142
23.09.2016, 16:55  [ТС] 7
Додумался сам. Для Турбо Пролога решение извращенное:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
domains
    i = integer
    s = symbol
predicates
    student(s,i,i,i)
clauses
    student("February Student",23,2,1997).
    student("January Student",7,1,1995).
    student("December Student",31,12,1996).
    student("March Student",2,3,1998).
    student("October Student",20,10,1994).
    student("November Student",12,11,1995).
goal
    student(X,A,Y,Z), Y=1, write(X," ",A,".",Y,".",Z),nl,fail;  student(X,A,Y,Z), Y=2, write(X," ",A,".",Y,".",Z),nl,fail; student(X,A,Y,Z), Y=12, write(X," ",A,".",Y,".",Z),nl,fail.
0
794 / 598 / 156
Регистрация: 07.10.2013
Сообщений: 1,327
23.09.2016, 17:00 8
если б ещё русифицированный, то могут быть завороты у преподов, а так
вот, пропагандирую
Try SWI-Prolog online
0
794 / 598 / 156
Регистрация: 07.10.2013
Сообщений: 1,327
23.09.2016, 17:05 9
Цитата Сообщение от artem2302 Посмотреть сообщение
Для Турбо Пролога решение извращенное
а, ну-ну..
а если углубить и расширить?
Миниатюры
Дизъюнкция целей: вывести фамилии студентов, родившихся зимой  
0
39 / 26 / 18
Регистрация: 30.09.2014
Сообщений: 142
23.09.2016, 21:03  [ТС] 10
arlat, о таком тоже думал, но все таки решил извратиться без дополнительных предикатов, изнасиловав запрос
0
23.09.2016, 21:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2016, 21:03
Помогаю со студенческими работами здесь

Из списка студентов группы где приведён год рождения вывести студентов родившихся в заданный год
Из списка студентов группы где приведён год рождения, вывести студентов родившихся в заданный год

Напишите программу, которая вводит и печатает эту информацию и печатает фамилии студентов, родившихся летом
запись имеет четыре поля, содержащие фамилию и дату рождения (число, месяц, год) студента. Напишите...

Напишите программу, которая вводит и печатает эту информацию и печатает фамилии студентов, родившихся после 1970 года
Задание: Запись имеет четыре поля, содержащие фамилию и дату рождения (число, месяц, год)...

Из списка студентов группы вывести фамилии двух самых старших студентов.
Здравствуйте. Задача поставлена следующим образом: из списка студентов группы, где приведены...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru