Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. :- dynamic osoba/3.
  2.  
  3. programDatabase:-
  4. nl,
  5. wirte('1 - wyswietlanie biezacego stanu bazy danych'), nl,
  6. write('2 - dopisanie nowej osoby'), nl,
  7. write('3 - usuniecie osoby'), nl,
  8. write('4 - obliczenie sredniego wieku'), nl,
  9. write('q - koniec pracy'),
  10. nl, nln, nl,
  11. write('PODAJ OPCJE [1-4,q]:'), get_char(Ch), get_char(_),
  12. opcja(Ch), programDatabase.
  13.  
  14. opcja('1'):- wyswietl, !.
  15. opcja('2'):- nowaOsoba,!.
  16. opcja('3'):- usunOsobe, !.
  17. opcja('4'):- sredniWiek,!.
  18. opcja('q'):-!, fail.
  19. opcja( _ ):- write('Zly numer opcji ([1-4,q]'),nl.
  20.  
  21. wyswietl:- nl, write('Elementy BAZY DANYCH:'), nl,
  22. osoba(Imie, Nazwisko, Wiek),
  23. write(Imie), write(' '),
  24. write(Nazwisko), write(' '),
  25. write(Wiek), write(' '),
  26. fail.
  27.  
  28. wyswietl:- nl.
  29.  
  30. nowaOsoba:-
  31. nl,
  32. write('Podaj Imie:'), getNazwe(Imie),
  33. write('Podaj Nazwisko:'), getNazwe(Nazwisko),
  34. write('Podaj Wiek:'), getLiczbe(Wiek),
  35. assertz(osoba(Imie, Nazwisko, Wiek)),
  36. nl.
  37.  
  38. getNazwe(Nazwa):-
  39. get_char(Ch),
  40. getReszte(Ch,ListaZnakow),
  41. atom_chars(Nazwa,ListaZnakow),!.
  42.  
  43. getReszte('\n',[]).
  44. getReszte(' ', []).
  45. getReszte(Ch, [Ch|Ogon]):-
  46. get_char(_Ch),
  47. getReszte(_Ch,Ogon).
  48.  
  49. getLiczbe(Liczba) :-
  50. get_char(Ch),
  51. getReszteLiczby(Ch, ListaCyfr),
  52. number_charts(Liczba,ListaCyfr),!.
  53.  
  54. getReszteLiczby('\n', []).
  55. getReszteLiczby(Ch, [Ch|ListaCyfr]) :-
  56. czyCyfra(Ch),
  57. get_char(_Ch),
  58. getReszteLiczby(_Ch, ListaCyfr).
  59.  
  60. czyCyfra('1'):-!.
  61. czyCyfra('2'):-!.
  62. czyCyfra('3'):-!.
  63. czyCyfra('4'):-!.
  64. czyCyfra('5'):-!.
  65. czyCyfra('6'):-!.
  66. czyCyfra('7'):-!.
  67. czyCyfra('8'):-!.
  68. czyCyfra('9'):-!.
  69. czyCyfra('0'):-!.
  70. czyCyfra(Ch):-nl, write('Znak: '), write(Ch), write(' nie jest cyfra!'), !, fail.
  71.  
  72. usunOsobe :-
  73. nl,
  74. write("Podaj imie usuwanej osoby"), getNazwe(Imie),
  75. retract(osoba(Imie, _Nazwisko, _Wiek)),
  76. !.
  77.  
  78. usunOsobe :- nl, write('Brak takiego elementu').
  79.  
  80. sredniWiek :-
  81. findall(Wiek, osoba(_Imie, _Nazwisko, Wiek), Lista),
  82. obliczSume(Suma,Lista),
  83. obliczLiczbe(Liczba,Lista),
  84. ( Liczba > 0,
  85. Srednia is Suma/Liczba,
  86. nl,
  87. write('Sredni wiek wynosi: '), write(Srednia),
  88. nl, !
  89. ); /* ; - oznacza alternatywe */
  90.  
  91. ( nl, nl,
  92. write(' Baza danych jest pusta ->'),
  93. write(' Obliczanie sredniej nie jest mozliwe')
  94. ).
  95.  
  96. obliczSume(0, []).
  97. obliczSume(Suma, [Glowa|Ogon]):-
  98. obliczSume(SumaOgona,Ogon),
  99. Suma is SumaOgona + Glowa.
  100.  
  101. obliczLiczbe(0, []).
  102. obliczLiczbe
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement