Найти все семьи имеющие детей - Prolog

Узнай цену своей работы

Формулировка задачи:

вот программа рабочая найти все семьи не имеющие детей
Листинг программы
  1. domains
  2. child=string*
  3. name,fami,otch=string
  4. man,woman=s(name,fami,otch)
  5. fam=f(man,woman,child)
  6. slist=fam*
  7. predicates
  8. family(fam)
  9. vvodFamily(fam)
  10. vvod(slist, slist)
  11. dobavElSpisok(child,child)
  12. reshenie(slist)
  13. bezchilFamily(fam,slist)
  14. prinad(fam,slist)
  15. findFam(slist,slist)
  16. clauses
  17. family(f(s("Ivan","Sidorov","Ivanovich"),s("Mariya","Ivanova","Viktorovna"),["Kolya"])).
  18. family(f(s("Petr","Ivanov","Stepanovich"),s("Nina","Ivanova","Olegovna"),["Pavel","Irina"])).
  19. family(f(s("Anatoliy","Kolesnikov","Maratovich"),s("Juliya","Kolesnilova","Damirovna"),[])).
  20. family(f(s("Timur","Kharisov","Ildarovic"),s("Evgeniya","Kharisova","Sergeevna"),["Stepan"])).
  21. family(f(s("Pavel","Kondrashov","Anatolevich"),s("Aleksandra","Kondrashova","Nikolaevna"),[])).
  22. vvod(L1,L2):-write("Do you want to add new family? (y/n)"), readchar(C),nl, C='y',!, vvodfamily(Z), vvod([Z|L1],L2).
  23. vvod(L1,L1).
  24. vvodFamily(f(s(X,Y,Z),s(X1,Y1,Z1),L)):-write("Vvedite father's name:"),readln(X),write("vvedite father's sirname:"),readln(Y),write("vvedite father's otchestvo:"),readln(Z),nl,
  25. write("Vvedite mother's name:"),readln(X1),write("vvedite mother's sirname:"),readln(Y1),write("vvedite mother's otchestvo:"),readln(Z1), dobavElSpisok([],L),!.
  26. vvodFamily(f(s(X,Y,Z),s(X1,Y1,Z1),L)):-write("Oshibka vvoda. Povtorite"), readln(_),vvodFamily(f(s(X,Y,Z),s(X1,Y1,Z1),L)).
  27. dobavElSpisok(L1,L2):-write("Budete vvodit detei(y/n)?"), readchar(C), nl, C='y',write("vvedite name:"),readln(Z), dobavElSpisok([Z|L1],L2).
  28. dobavElSpisok(L,L).
  29. reshenie(LL):-findall(Q,family(Q),L0), vvod(L0,L1), findFam(L1,LL).
  30. bezchilFamily(f(X,Y,L1),L):-L1=[],prinad(f(X,Y,L1),L).
  31. prinad(X,[X|L1]).
  32. prinad(X,[X1|L1]):-prinad(X,L1).
  33. findFam(L1,L2):-findall(Q,bezchilfamily(Q,L1), L2).
как переделать чтобы искала имеющие детей

Решение задачи: «Найти все семьи имеющие детей»

textual
Листинг программы
  1. bezchilFamily(f(X,Y,L1),L):-L1=[_],prinad(f(X,Y,L1),L).
  2. bezchilFamily(f(X,Y,L1),L):-L1=[_,_],prinad(f(X,Y,L1),L).
  3. bezchilFamily(f(X,Y,L1),L):-L1=[_,_,_],prinad(f(X,Y,L1),L).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы