Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 03.10.2010
Сообщений: 25
1

День рождения =)

04.10.2010, 18:50. Показов 1835. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется база данных,содержащая сведения об имени,фамилии,го-
де , дне рождения и номере телефона конкретного человека. Органи-
зовать выбор из базы данных человека, имеющего день рождения в
текущем месяце.
И вроде бы всё работает но не могу добитьс ячтоб выводил именно тех людей у которых в текущем месяце днюха=))) подмогите люди добрые хД
Вот текст проги
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Domains
   name = person(symbol, symbol)
         /* (Фам.,  Имя ) */
 
   birthday = b_date(symbol, integer, integer)
         /* (Месяц,   День,    Год) */
 
Predicates
   check_birthday_month(integer, birthday)
   determ convert_month(symbol, integer)
   get_months_birthdays
   phone_list(name, symbol, birthday)
   write_person(name, symbol, birthday)
 
Clauses
   phone_list(person(ed, "Андрей"), "21-8463",
          b_date(jan, 3, 1955)).
   phone_list(person(nnnn, "Кира"), "21-8400",
          b_date(feb, 5, 1950)).
   phone_list(person(rrrr,"Николай"), "55-5653",
          b_date(mar, 3, 1935)).
   phone_list(person(tttt, "Надежда"), "67-2223",
          b_date(may, 29, 1951)).
   phone_list(person(cccc, "Татьяна"), "555-1212",
          b_date(may, 12, 1962)).
   phone_list(person(d, "Cергей"), "11-8400",
          b_date(mar, 17, 1959)).
   phone_list(person("Маша","Иванова"), "21-8400",
          b_date(apr, 11, 1955)).
   phone_list(person("Лариса Александровна","Шалаева"), "21-8470",
          b_date(dec,24, 1937)).
   get_months_birthdays :-
      write(" Фамилия         \t Имя     \t Тел.  \t       День рожд. \n",
        " ================\t==============\t========\t===========\n\n"),
      date(_, This_month, _),       % Вывод месяца из системного времени
   write_person( person(First, Last), Phone, b_date(Mon,Day,Year) ) :-
      writef("  %-15\t %-12\t%-10\t%/%/%\n" ,
   convert_month(jan, 1).
   convert_month(feb, 2).
   convert_month(mar, 3).
   convert_month(apr, 4).
   convert_month(may, 5).
   convert_month(jun, 6).
   convert_month(jul, 7).
   convert_month(aug, 8).
   convert_month(sep, 9).
   convert_month(oct, 10).
   convert_month(nov, 11).
   convert_month(dec, 12).
 
Goal
  makewindow(1,2,4," Дни рождения в текущем месяце ",0,0,25,80),
  get_months_birthdays ,
  nl.
37-38 строчки ругаеться на ошибку ,уже всё препробовал думал из за write то что такой предикат он не хочет компилять его поменял ничего не изменилось=(
Паскалевскими словами как так на прологе написать чтоб было нечто
if This_month=b_date(Mon) then write (person,Phone,b_date) хД

Добавлено через 1 час 45 минут
=((((

Добавлено через 21 час 20 минут
помогите кому не сложно или мб с ручного ввода чтоб как то определяло
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2010, 18:50
Ответы с готовыми решениями:

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

Определить, какой будет день недели через N дней, если сегодня день недели S
Вычисление с днями недели. Обозначим дни как 0 = воскресенье, 1 = понедельник, ..., 6 = суббота....

Заданы день и месяц рождения, а также текущие день, месяц и год. Определить, сколько дней осталось до дня рождения
заданы день и месяц рождения, а также текущие день, месяц и год. Определить, сколько дней осталось...

Как по дню и месяцу рождения определить день недели (дня рождения) в любом году?
Подскажите, пожалуйста, как по дню и месяцу рождения определить день недели (дня рождения) в любом...

4
Заблокирован
04.10.2010, 20:09 2
что это за пролог?
Prolog
1
 date(_, This_month, _),       % Вывод месяца из системного времени
у меня не работает
да и вот тут:
Prolog
1
2
 date(_, This_month, _),       % Вывод месяца из системного времени
   write_person( person(First, Last), Phone, b_date(Mon,Day,Year) ) :-
два разных правила соединены через "И" (у меня такое неработает)

Добавлено через 1 минуту
Prolog
1
2
writef("  %-15\t %-12\t%-10\t%/%/%\n" ,
   convert_month(jan, 1).
тут не закрыта скобочка, так и должно быть?
0
1 / 1 / 0
Регистрация: 03.10.2010
Сообщений: 25
04.10.2010, 20:47  [ТС] 3
Скобку извиняюся сам ступил а вот
date стандартный предикат же=)
выводит из системного времени час,месяц и год т.к час и год не нужны на их месте прочерк
почему не работает то он у вас?
вот как раз в этих строчках 37-38 где то ошибку и находит =((((
а как если просто допустим с клавиатуры ввести месяц и его сравнить с каждым так реально?
как такую структуру вообще записать?
0
Заблокирован
04.10.2010, 21:13 4
Fierry, подозреваю, что не работает потому что у меня Turbo Prolog, а у вас что-то иное.

Добавлено через 12 минут
не стал разбираться в вашем коде, вот, надеюсь, по теме:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
predicates 
     birthday(string,string)   
     get(string,string).  
clauses       
    get(X,Y):-
        birthday(X,Y).
    birthday(mart,petr).
    birthday(mart,ivan).
    birthday(avgust,senya).
    birthday(decaber,kseniya).
goal 
     makewindow(1,7,7,"Dialog programm",4,55,10,22),
     readln(X),get(X,Y),write(Y),nl,fail.
1
1 / 1 / 0
Регистрация: 03.10.2010
Сообщений: 25
09.10.2010, 14:32  [ТС] 5
Ага=)) спасибо разобрался уже тож сам) хотя date вродь работает предикат
по крайней мере если This_month во write прописать то он выводит номер текущего месяца=)
незнай только почему он сравнить с ним не может) ну да ладно)
У меня Turbo prolog 2.0
0
09.10.2010, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2010, 14:32
Помогаю со студенческими работами здесь

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

Найти школьника, чей день рождения выпадает на заданный день
Выяснить, имеется ли среди школьников учащийся, день рождения которого совпадает со средним...

Найти школьника, чей день рождения выпадает на заданный день
Выяснить, имеется ли среди школьников учащийся, день рождения которого совпадает: с наибольшим...

Задание 5. В какой день вы празднуете день рождения ( Excel)
Создайте модуль, который по дате вашего рождения определяет день недели, в который празднуете свой...


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

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