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

Найти все отцов, имеющих больше 3 детей

23.11.2015, 18:27. Показов 1982. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят помоги с программой.
Требуется сформировать исходный список структур. Предусмотреть предикат, дополняющий этот список информацией, вводимой с клавиатуры. Сформировать из исходного списка новый список структур и вывести его на экран. Определены структуры «Ф.И.О», «дети» (в виде списка [имя_1, имя_2,…, имя_N]), «семья» (Ф.И.О., Ф.И.О., дети). Найти все отцов, имеющих больше 3 детей.

Не могу справиться. Можете что подсказать?

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
domains
    rod=r(string,string,string)
    deti=string*
    fam=f(rod,rod,deti)
predicates
    family(fam)
    search(fam,integer)
    dlina(deti,integer)
    
clauses
    family(f(r("Ivanov","Petr","Ilich"), r("Ivanova","Maria","Ivanovna"), ["Vanya","Olya","Anya"])).
    family(f(r("Ivanov1","Petr","Ilich"), r("Ivanova1","Maria","Ivanovna"), ["Vanya","Anya"])).
    family(f(r("Ivanov2","Petr","Ilich"), r("Ivanova2","Maria","Ivanovna"), ["Vanya","Olya"])).
    family(f(r("Ivanov3","Petr","Ilich"), r("Ivanova3","Maria","Ivanovna"), [])).
    family(f(r("Ivanov4","Petr","Ilich"), r("Ivanova4","Maria","Ivanovna"), ["Vanya","Masha","Anya"])).
    dlina([],0).
    dlina([_|T],N):- dlina(T,NT), N=NT+1.
    search(P,K):-family(f(P,_,L),K), dlina(L,K1), K1>2.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2015, 18:27
Ответы с готовыми решениями:

Найти всех матерей, имеющих менее трех детей
Здравствуйте. Нужна помощь. Есть задание: Требуется сформировать исходный список структур.Определены структуры "ФИО",...

Найти всех матерей, имеющих менее трех детей
Всем привет :) Необходимо найти всех матерей имеющих менее трех детей. Как это реализовать?

Составить дерево из списка отцов и детей.
Есть список отцов, для каждого отца перечислены все сыновья. Как по этим данным составить дерево? Прошу, помогите Т.е: 0: 1,6,7 1:...

5
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 9
27.11.2015, 18:06  [ТС]
Помогите пожалуйста... не получается у меня( Не думаю что не найдутся люди которые разбираются в Прологе
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
27.11.2015, 18:48
Ну....
Если смотреть на Ваше задание дословно, то у Вас совсем не то.
1) У Вас должен быть список структур, а не база фактов. Хотя, конечно, можно понимать так, что список нужно сформировать на основе базы.
2) У Вас должен быть
Цитата Сообщение от FanToPlay Посмотреть сообщение
предикат, дополняющий этот список информацией, вводимой с клавиатуры.
Но если просто поправить Ваш код, то зачем Вы в 18 строке добавили повсюду непонятный параметр K?
Факт family у Вас имеет ровно один параметр, а Вы ставите ему второй - понятное дело, что ничего не работает.

Надо или так
Prolog
1
2
3
4
5
6
7
8
    search(P, K) :- 
        family(f(P, _, L)), 
        dlina(L, K1), 
        K1 > K.
goal
    search(P, 2),
    write(P), nl,
    fail.
Или так
Prolog
1
2
3
4
5
6
7
8
    search(P) :- 
        family(f(P, _, L)), 
        dlina(L, K1), 
        K1 > 2.
goal
    search(P),
    write(P), nl,
    fail.
0
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 9
28.11.2015, 14:59  [ТС]
Black Fregat, этот параметр я ввел для подсчета количества детей , чтобы мог сравнивать. До другого пока не додумался.
0
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 9
29.11.2015, 19:18  [ТС]
Black Fregat, а более подробнее про факт family можно? не до конца допонял вас
0
0 / 0 / 0
Регистрация: 05.06.2015
Сообщений: 15
02.12.2015, 20:24
Black Fregat, в таком случаи он ругается на family
не смогли помочь еще? как бы вы реализовали эту программу? не смогли бы помочь? буду очень признателен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2015, 20:24
Помогаю со студенческими работами здесь

Удалить из бинарного дерева всех отцов, имеющих одного сына
Написала класс по работе с бинарным деревом. Помогите, пожалуйста, написать функцию по удалению из дерева всех однодетных отцов. Сижу уже...

Поиск *родителей* не имеющих *детей*
Есть такая задача.. Не могу понять как найти такую запись в таблице A, имеющей связь с таблицей B, но при этом для этой записи в таблице А...

Найти все семьи имеющие детей
вот программа рабочая найти все семьи не имеющие детей domains child=string* name,fami,otch=string man,woman=s(name,fami,otch) ...

Найти все семьи, имеющие детей
Определены структуры "ФИО", "дети" (в виде списка ), "семья" (фио,фио,дети). Найти все семьи, имеющие детей

Найти студентов имеющих средний балл больше заданного
Доброго времени суток! Необходимо решить задание 2мя способами. С помощью классов и с помощью switch Вывести фамилии, имена, отчества...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru