Você está na página 1de 4

include "prova.

inc"

domains

l = integer*
ll = l*

predicates

exer1(ll)

inverte(ll,ll)
inverte2(ll,ll,ll)

producao(ll,ll)
producao2(ll,ll,integer,integer,ll,ll)

media_m(ll)

maior(ll, integer, integer)


maior2(ll,integer,integer,integer,integer)

prod_hora(ll,ll,integer,integer,integer,ll,ll)

media_h(ll, real)
media_h2(ll, integer, integer)

clauses

%inverter lista
inverte([],[]):-!.
inverte(L,R):-
inverte2(L,[],R).

inverte2([],T,T):-!.
inverte2([X|Ca],T,R):-
inverte2(Ca,[X|T],R).

%------------------------------
%letra A Total produzido por maquina
producao([],[]):-!.

producao(LL,Prod):-
LL = [[_,D,M,A,_,_]|_],
write("Produçao das maquinas no dia: ", D, "/", M,"/", A,"\n"),
producao2(LL,LL,1,0,[],Produ),
inverte(Produ,Prod).

producao2(_,[],25,Acu,T,Prod):-!,
Prod = [[25, Acu]|T].
producao2(LL,[],C,Acu,T,Prod):-
C1 = C + 1,
write ("\nMaquina n°: ", C, " Total: ", Acu),
producao2(LL,LL,C1,0,[[C,Acu]|T],Prod),!.

producao2(LL,[[N,_,_,_,_,P]|Ca],N,Acu,T,Prod):-
Acu1 = P+ Acu,
producao2(LL, Ca, N, Acu1, T, Prod),!.
producao2(LL, [_|Ca], N, Acu, T,Prod):-
producao2(LL, Ca, N, Acu, T, Prod).

%____________________________________
%letra B media por maquina
media_m([]):-!.
media_m([[N,T]|Ca]):-
M = T / 24,
write("\nA media maquina ", N, " e: ", M),
media_m(Ca).

%-------------------------------------
%letra C maquina que mais produziu
maior([], 0, 0):-!.

maior([[N,T]|Ca], Prod, Num):-


maior2(Ca, T, Prod, N, Num).

maior2([], T, T, R, R):-!.
maior2([[N,T]|Ca], M, FM, _,R):-
T > M, !,
maior2(Ca, T, FM, N, R).
maior2([_|Ca],M, FM, Num, Resp):-
maior2(Ca, M, FM, Num, Resp).

%----------------------------------------
%letra D maior produção horario
prod_hora(_,[],_,25,Acu,T,Prod):-!,
Prod1 = [[25, Acu]|T],
inverte(Prod1,Prod).

prod_hora(LL,[],H,C,Acu,T,Prod):-
C1 = C + 1,
prod_hora(LL,LL,H,C1,0,[[C,Acu]|T],Prod),!.

prod_hora(LL,[[N,_,_,_,H,P]|Ca],H,N,Acu,T,Prod):-
Acu1 = P+ Acu,
prod_hora(LL, Ca, H, N, Acu1, T, Prod),!.
prod_hora(LL, [_|Ca], H, N, Acu, T,Prod):-
prod_hora(LL, Ca, H, N, Acu, T, Prod).

%---------------------------------------
%letra e media hora a hora
media_h([],0.0):-!.
media_h(LL, R):-
media_h2(LL, 0, S),
R = S / 24.

media_h2([],S,S):-!.
media_h2([[_,T]|Ca],S,R):-
S1 = T + S,
media_h2(Ca, S1, R).

%EXERCICIO 1
exer1([]):-!, write("Lista Vazia").
exer1(LL):-
write("\nLetra A: \n"), producao(LL,Prod),
write("\n\nLetra B: \n"), media_m(Prod),
write("\n\nLetra C: "), maior(Prod, Tprod, Num),
write("\n A maquina que mais produziu foi a ", Num, " com ", Tprod),
write("\n\nLetra D: \n"), write("Digite a Hora: "), readint(Ho),
prod_hora(LL, LL, Ho, 1, 0, [], Hora),
maior(Hora, PH, N),
write("\n A maquina que mais produziu foi a ", N, " com ", PH),
write("\n\nLetra E: "), media_h(Prod,Me), write("\nA media é: ", Me).

goal
LL = [[1,22,9,2010,8,1243],[2,22,9,2010,8,4111],[3,22,9,2010,8,221], [4,22,9,2010,8,543],
[5,22,9,2010,8,1112],[1,22,9,2010,9,1435],[2,22,9,2010,9,2243]],

exer1(LL).
Questão 2

predicates

nondeterm info(integer, integer, integer, integer)


nondeterm imprime(integer)
nondeterm maiorC(integer, integer)
nondeterm maiorD (integer, integer)

clauses

info(0001, 500, 250, 100).


info(0002, 600, 300, 150).
info(0003, 400, 300, 500).
info(9999, 700, 530, 100).

imprime(10000).
imprime(N):-
info (N, Sal, Deb, Cred),
SaldoA = Sal - Deb + Cred,
write("\nConta n°: ", N, " Saldo Atual: ", SaldoA),
N1 = N + 1,
imprime(N1).

imprime(N):-
N1 = N + 1, imprime(N1).

maiorC(M, _):-
info(N, _, _, C),
C > M,
maiorC(C, N).

maiorC(C,N):-
write("\n\nMaior Credito e da conta: ", N, " com: R$ ", C).

maiorD(M, _):-
info(N, _, D, _),
D > M,
maiorD(D, N).

maiorD(D,N):-
write("\n\nMaior Debito e da conta: ", N, " com: R$ ", D).

goal
write("letra A: \n"),
imprime(1),
write("\n\nLetra B: \n"),
maiorC(0,0),
write("\n\nLetra C: \n"),
maiorD(0,0).

Você também pode gostar