Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/76: Рейтинг темы: голосов - 76, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 6

4 программы на прологе (база знаний, работа со списками, графические возможности и функция)!

18.05.2010, 22:59. Показов 14742. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Создать базу данных о заданной предметной области в виде множества фактов языка Пролог (не менее 5 фактов). Информацию о каждом компоненте БД представить в виде структуры. Разработать набор предикатов, осуществляющих взаимодействие с БД, при помощи которых можно реализовать все типы запросов, приведенные в варианте задания.
Предметная область – учебная группа факультета. Каждая учебная группа может быть описана структурой: название факультета, код специальности, номер группы, состав группы. Состав группы может быть описан списком структур, описывающих отдельного студента: фамилия, имя, отчество, пол, год рождения, обучение на военной кафедре, сводная ведомость. Сводная ведомость может быть описана списком из следующих структур: предмет, оценка.
Реализовать следующие типы запросов:
а)Подсчитать число групп на указанном факультете;
б)Найти всех студенток, обучающихся по указанной специальности;
в)Найти группу, которая сдала больше всего предметов сессию;
г)Найти всех студентов, имеющих задолженности;
д)Найти всех студентов, обучающихся на военной кафедре.

2. Вычислите сумму первых n членов степенного ряда с общим членом (рис)
Название: 1.jpg
Просмотров: 4035

Размер: 2.4 Кб

3. вывести на экран изображение
Название: 2.jpg
Просмотров: 4023

Размер: 2.1 Кб

4. Напишите базу знаний, описывающую обращение списка (первый элемент становится последним).

версии пролога: Visual Prolog 5.2 или ПРОЛОГ-Д.

Буду очень признательна за любую помощь!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2010, 22:59
Ответы с готовыми решениями:

Работа со списками в Прологе
Доброе время суток. Спасайте. Для меня Пролог просто дремучий лес. ( 1. Разработать программу для печати элементов списка. ...

Графические возможности
ПРИВЕТ!!! :) Люди добрые, помогите пожалуйста нарисовать горный пейзаж...

Графические возможности Delphi
Разработать программу, демонстрирующую графические возможности Delphi. Предусмотреть обязательное использование оператора цикла для...

9
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 6
19.05.2010, 18:19  [ТС]
Пожалуйста, хотя бы одно задание В Субботу зачет
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
19.05.2010, 20:26
Вот вторая задача:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
predicates
elem(real,real,integer,real).
main(real,integer,real).
 
clauses
elem(X,X,1,X):-!.
elem(X,E,N,Sum):-N1=N-1,elem(X,E1,N1,Sum1), E=-E1*X*X/((2*N-2)*(2*N-1)), Sum=Sum1+E.
 
main(X,N,Sum):-elem(X,_,N,Sum).
 
goal
main(1,3,S).
Составьте сами базу фактов по первой задаче, а с запросами уже поможем.
Для четвертой задачи можно воспользоваться поиском на форуме по слову reverse.
1
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 6
19.05.2010, 21:31  [ТС]
огромное спасибо! приступлю к базе знаний!
0
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 6
20.05.2010, 23:40  [ТС]
Создала список фактов по первой задаче. Помогите, пожалуйста с запросами.

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
DOMAINS
name, otchestvo, familiya, voen_kaf,vedomost, fakultet, predmet = string
kod, god_rojdenia, nomer_gr, ocenka, sostav = integer
PREDICATES
nondeterm grup (fakultet,kod,nomer_gr,sostav).
nondeterm student_fiz_mat (imja, otchestvo, familiya,god_rojdenia, voen_kaf,vedomost).
nondeterm student_fiz_vos (imja, otchestvo, familiya,god_rojdenia, voen_kaf,vedomost).
nondeterm student_fil_fak (imja, otchestvo, familiya,god_rojdenia, voen_kaf,vedomost).
nondeterm vedomost_Shajdurova (predmet,ocenka).
nondeterm vedomost_Lutov (predmet,ocenka).
nondeterm vedomost_Patrusheva (predmet,ocenka).
nondeterm vedomost_Sidyakina (predmet,ocenka).
nondeterm vedomost_Vakurov (predmet,ocenka).
nondeterm vedomost_Smolin (predmet,ocenka).
nondeterm vedomost_Petrov (predmet,ocenka).
CLAUSES 
grup ("fiz_mat",505,3,3).
grup ("fil_fak",504,1,2).
grup ("fiz_vos",503,2,2).
student_fiz_mat ("Alla", "Ivanovna", "Shajdurova",1990, "-", "+").
student_fiz_mat ("Ruslan", "Aleksandrovich", "Lutov",1990, "+", "+").
student_fiz_mat ("Vera", "Valerevna", "Patrusheva",1989, "-", "+").
student_fil_fak ("Anna", "Petrovna", "Sidyakina",1990, "-", "-").
student_fil_fak ("Sergey", "Aleksandrovich", "Vakurov",1991, "+", "+").
student_fiz_vos ("Sergey", "Vladimirovich", "Smolin",1990, "+", "-").
student_fiz_vos ("Kiril", "Ilich", "Petrov",1990, "+", "-").
vedomost_Shajdurova ("matem",5).
vedomost_Shajdurova ("fizika",5).
vedomost_Lutov ("matem",5).
vedomost_Lutov ("fizika",5).
vedomost_Patrusheva ("matem",4).
vedomost_Patrusheva ("fizika",4).
vedomost_Sidyakina ("ritor",4).
vedomost_Sidyakina ("jazyk",2).
vedomost_Vakurov ("ritor",5).
vedomost_Vakurov ("jazyk",4).
vedomost_Smolin ("beg",5).
vedomost_Smolin ("pedagogika",2).
vedomost_Petrov ("pedagogika",2).
vedomost_Petrov ("beg",5).
Добавлено через 24 минуты
Prolog
1
2
3
4
5
6
7
8
9
10
Domains
list=integer*
PREDICATES 
genl(integer,list)
CLAUSES
genl=(0,[]):-!.
genl=(N,[N|L]):-N1=N-1, genl(N1,L).
GOAL
reverse([X|L1], L2):-reverse(L1, L3), append( L3, [X], L2). 
reverse([X|L1], L2):-reverse(L1, L3), append( L3, [X], L2).
Что здесь не так?

Добавлено через 2 часа 59 минут
с reversом сделала Запросы не могу
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
20.05.2010, 23:51
У Вас база фактов составлена не правильно. Надо например так:
g(mat,100,5,[s(ivanov,ivan,ivanovich,m,1990,y,[p(matan,5),p(linal,4)]),s(petrov,petr,petrovich,m,1989,n,[p(matan,3)]]).
А после этого помогу Вам с запросами.
1
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 6
21.05.2010, 00:26  [ТС]
спасибо, исправлюсь

Добавлено через 20 минут
вот так верно?

Prolog
1
2
3
4
5
6
7
8
9
10
11
DOMAINS
name, otchestvo, familiya, voen_kaf,vedomost, fakultet, predmet, pol = string
kod, god_rojdenia, nomer_gr, ocenka, sostav = integer
PREDICATES
nondeterm g (fakultet,kod,nomer_gr,sostav).
nondeterm s (imja, otchestvo, familiya, pol, god_rojdenia, voen_kaf,vedomost).
nondeterm v (predmet,ocenka).
CLAUSES 
g(mat,100,1,[s(alla, ivanovna, shajdurova,g,1990,n,[v(matan,5),v(algebra,4)]),s(sergey, aleksandrovich, vakurov,m,1991,y,[v(matan,3)],s(vera, valerevna, patrusheva,g,1989,n,[v(matan,4),v(algebra,3)]]).
g(fiz,101,2,[s(ruslan, aleksandrovich, lutov,m,1990,y,[v(optika,4),v(termeh,5)]),s(kiril, ilich, petrov,m,1989,y,[v(termeh,4)]]).
g(inf,102,3,[s(sergey, vladimirovich, smolin,m,1989,y,[v(prolog,3),v(vbasic,4)]),s(anna, petrovna, sidyakina,m,1988,n,[v(prolog,3),v(vbasic,5)]]).
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
21.05.2010, 01:15
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
55
56
57
58
59
60
61
62
63
64
DOMAINS
predmet=v(string,integer)
predmeti=predmet*
student=s(string,string,string,string,integer,string,predmeti)
studenti=student*
list=integer*
slist=string*
 
PREDICATES
nondeterm g(string,integer,integer,studenti).
nondeterm chislo_grupp(string,integer).
nondeterm length(list,integer).
nondeterm vse_studentki(integer,slist).
nondeterm studentka(string,integer).
nondeterm member(student,studenti).
nondeterm member(predmet,predmeti).
nondeterm kolvo_predmetov(string,integer,integer).
nondeterm ocenka(string,integer,integer).
nondeterm bolshe(integer).
nondeterm bolshe_vsego_predmetov(string,integer).
nondeterm zadolznosti(slist).
nondeterm dvoika(string).
nondeterm na_voennoi(string).
nondeterm vse_na_voennoi(slist).
 
CLAUSES
g(mat,100,1,[s(alla, ivanovna, shajdurova,g,1990,n,[v(matan,5),v(algebra,4)]),s(sergey, aleksandrovich, vakurov,m,1991,y,[v(matan,3)]),s(vera, valerevna, patrusheva,g,1989,n,[v(matan,4),v(algebra,3)])]).
g(fiz,101,2,[s(ruslan, aleksandrovich, lutov,m,1990,y,[v(optika,3),v(termeh,2)]),s(kiril, ilich, petrov,m,1989,y,[v(termeh,4)])]).
g(inf,102,3,[s(sergey, vladimirovich, smolin,m,1989,y,[v(prolog,3),v(vbasic,4)]),s(anna, petrovna, sidyakina,g,1988,n,[v(prolog,3),v(vbasic,5)])]). 
 
length([],0).
length([_|Tail],N):-length(Tail,N1),N=N1+1.
 
chislo_grupp(F,N):-findall(Number,g(F,_,Number,_),List),length(List,N).
 
member(H,[H|_]).
member(H,[_|Tail]):-member(H,Tail).
 
studentka(Surname,S):-g(_,S,_,Students),member(s(_,_,Surname,g,_,_,_),Students).
 
vse_studentki(S,List):-findall(Surname,studentka(Surname,S),List).
 
ocenka(F,G,O):-g(F,_,G,Students),member(s(_,_,_,_,_,_,Ocenki),Students),member(v(_,O),Ocenki).
 
kolvo_predmetov(F,G,N):-findall(Ocenka,ocenka(F,G,Ocenka),List),length(List,N).
 
bolshe(N):-kolvo_predmetov(_,_,M), M>N.
 
bolshe_vsego_predmetov(F,G):-kolvo_predmetov(F,G,N),not(bolshe(N)).
 
dvoika(Surname):-g(_,_,_,Students),member(s(_,_,Surname,_,_,_,Ocenki),Students),member(v(_,2),Ocenki),!.
 
zadolznosti(List):-findall(Surname,dvoika(Surname),List).
 
na_voennoi(Surname):-g(_,_,_,Students),member(s(_,_,Surname,_,_,y,_),Students).
 
vse_na_voennoi(List):-findall(Surname,na_voennoi(Surname),List).
 
goal
%chislo_grupp(mat,N).
%vse_studentki(100,L).
%bolshe_vsego_predmetov(F,G).
%zadolznosti(L).
vse_na_voennoi(L).
2
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 6
21.05.2010, 07:55  [ТС]
Очень Вам признательна! Что бы я без Вас делала!
0
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 3
21.02.2011, 21:56
@лл@, А кинь пожалуйста текст программы с обращением списка Если он вдруг у тебя еще сохранился

UPD всё, нашел уже)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2011, 21:56
Помогаю со студенческими работами здесь

Графические возможности Delphi
Проиллюстрируйте законы Кеплера, согласно которым планеты движутся по эллипсам, в одном из фокусов которого находиться солнце....

Графические возможности Delphi
Здравствуйте. Кто-нибудь помогите составить программу в делфи (обязательно в делфи 7). По возможности с формой. Или перечислите компоненты,...

Графические возможности Delphi
1. Создать фон формы с плавным переходом от одного цвета к другому. 2. Используя пиксельную графику и графические примитивы, вывести на...

Графические возможности Delphi
Помогите создать программу в Дельфи...В диалоговое окно вывести текст разного стиля и размера

Графические возможности Delphi.
Здравствуйте! Объясните пожалуйста как в этом коде программы, сделать, так, чтобы результат построения функции F(х) выводился в новое окно?...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru