-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathprojeto.pl
131 lines (117 loc) · 3.61 KB
/
projeto.pl
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
%Henrique_Sartori_Siqueira_19240472
%Jemis_Dievas_Jose_Manhica_19076272
%Rafael_Silva_Barbon_19243633
%Fatos(Disponibilizado pelo professor)
sexo(paulo, masculino).
sexo(jose, masculino).
sexo(rosa, feminino).
sexo(saulo, masculino).
sexo(maria, feminino).
sexo(fabio, masculino).
sexo(joao, masculino).
sexo(douglas, masculino).
sexo(lucia, feminino).
idade(paulo, 73).
idade(jose, 33).
idade(rosa, 23).
idade(saulo, 99).
idade(maria, 70).
idade(fabio, 20).
idade(joao, 45).
idade(douglas, 66).
idade(lucia, 61).
tempoDeServico(paulo, 40).
tempoDeServico(jose, 10).
tempoDeServico(rosa, 2).
tempoDeServico(saulo, 50).
tempoDeServico(maria, 40).
tempoDeServico(fabio, 1).
tempoDeServico(joao, 15).
tempoDeServico(douglas, 34).
tempoDeServico(lucia, 32).
contribuicao(paulo, 35).
contribuicao(jose, 5).
contribuicao(rosa, 0).
contribuicao(saulo, 50).
contribuicao(maria, 30).
contribuicao(fabio, 1).
contribuicao(joao, 15).
contribuicao(douglas, 31).
contribuicao(lucia, 29).
tempoNaCarreira(paulo, 20).
tempoNaCarreira(saulo, 27).
tempoNaCarreira(maria, 30).
tempoNaCarreira(douglas, 10).
tempoNoCargo(paulo, 10).
tempoNoCargo(saulo, 20).
tempoNoCargo(maria, 25).
tempoNoCargo(douglas, 5).
maior(X,Y):-
X >= Y.
%REGRA1
aposen_compusoria(X) :-
idade(X,Y),%X nome e Y idade
maior(Y,70),%Verifica se a idade e maior ou igual a 70
writeln(X),fail.%Imprime o nome e força uma outra avaliaçao
%REGRA2
aposen_homem(X) :-
sexo(X,masculino),%X recebe o nome do homem
idade(X,Y),%X nome e Y idade
maior(Y,65),%Verifica se a idade e maior ou igual a 65
writeln(X),fail.%Imprime o nome e força uma outra avaliaçao
%REGRA3
aposen_mulher(X) :-
sexo(X,feminino),%X recebe o nome da mulher
idade(X,Y),%X nome e Y idade
maior(Y,60),%Verifica se a idade e maior ou igual a 60
writeln(X),fail.%Imprime o nome e força uma outra avaliaçao
%REGRA4
aposen_volun_caso1(X) :-
sexo(X,masculino),%X recebe o nome do homem
idade(X,Y),%X nome e Y idade
maior(Y,60),%Verifica se a idade e maior ou igual a 60
contribuicao(X,A),%A recebe o tempo de contribuicao e depois verifica se e maior 35
maior(A,35),
tempoDeServico(X,B),%B recebe o tempo de serviço de X e depois verifica se e maior que 10
maior(B,10),
tempoNoCargo(X,C),%C recebe o tempo no cargo de X e verifica que eh maior de 5
maior(C,5),
writeln(X),fail;%Imprime o nome e força uma outra avaliaçao
%ou
sexo(X,feminino), %Regras se for mulher(Funcionamento igual a parte superior)
idade(X,Y),
maior(Y,55),
contribuicao(X,A),
maior(A,30),
tempoDeServico(X,B),
maior(B,10),
tempoNoCargo(X,C),
maior(C,5),
writeln(X),fail.
%Regra5
aposen_volun_caso2(X) :-
sexo(X,masculino),%X recebe o nome do homem
idade(X,Y),%X recebe o nome e Y idade e verifica se e maior que 60
maior(Y,60),
contribuicao(X,A),%A recebe o tempo de contribuicao e depois verifica se e maior 35
maior(A,35),
tempoDeServico(X,B),%B recebe o tempo de serviço de X e depois verifica se e maior que 20
maior(B,20),
tempoNaCarreira(X,C),%C recebe o tempo de X na carreira e verifica se e maior que 10
maior(C,10),
tempoNoCargo(X,D),%D recebe o tempo de X no cargo e verifica se e maior que 15
maior(D,15),
writeln(X),fail;%Imprime o nome e força uma outra avaliaçao
%ou
sexo(X,feminino),%Regras se for mulher(Funcionamento igual a parte superior)
idade(X,Y),
maior(Y,55),
contribuicao(X,A),
maior(A,30),
tempoDeServico(X,B),
maior(B,20),
tempoNaCarreira(X,C),
maior(C,10),
tempoNoCargo(X,D),
maior(D,15),
writeln(X),fail.