Prolog - Ayuda en este codigo RAPIDO!!1

 
Vista:

Ayuda en este codigo RAPIDO!!1

Publicado por Karen Carmen Gomez (3 intervenciones) el 09/06/2009 22:02:24
evaluar:-
write('------------------------------------------'),nl,
write('EVALUADOR DE EXPRESIONES ARITMETICAS '),nl,
write(' SIMPLES(dos variables). '),nl,
write('------------------------------------------'),
nl,nl,
write('Valor de X:'),
read(X1),
write('Valor de Y:'),
read(Y1),
write('Expresion:'),
read(E1),nl,
recursivo(E1,R,X1,Y1),
%CONVERTIR LA LISTA A ESTRUCTURA.
K =..R,
%EFECTUAR LOS CALCULOS.
J is K,
write('La solución de la expresión es: '),
write(J),nl,nl,
write('------------------------------------------'),nl,
write('PARA MAS INFORMACION ESCRIBA CREDITOS. '),nl,
write('------------------------------------------'),
nl,nl.

%RECURSIVO (Obtener Lista con las variables sustituidas para poder evaluar).
recursivo(A,R,V1,V2):-A=..L,sus(x,V1,L,C),sus(y,V2,C,B),length(B,Largo),

analizar(B,R,Largo,1,V1,V2).

%Sustituir un elemento por otro.
sus(_,_,[],[]).
sus(X,Y,L,R):-member(X,L)->append(L1,[X|L2],L),
append(L1,[Y|L2],P),
sus(X,Y,P,R);append([],L,R),!.

%ANALIZAR (Verificar si existen subcadenas complejas en la ecuacion).
analizar(L,R,S,Cont,V1,V2):-((Cont > S)->copiaLista(L,R),!);(elPos(Cont,A,L),

buscar(Cont,A,L,Lr,Z),((Z == 1)->recursivo(Lr,R,V1,V2));elPos(Cont,A,L),
A=..K,length(K,N),((N > 1)->J=..K,recursivo(J,O,V1,V2),
G=..O,M is G,susPos(M,Cont,L,C),Cant is Cont+1,analizar(C,R,S,Cant,V1,V2));
(Cant is Cont+1,analizar(L,R,S,Cant,V1,V2))).

%ELPOS (Obtener elemnto en una posicion).
elPos(Pos,El,L):-append(L1,[El|L2],L),A is Pos-1,length(L1,A).

%COPIA LISTA (Copiar una lista).
copiaLista(L,L2):-append([],L2,L).

%SUSPOS (Sustituir elemento en una posicion).
susPos(X,Pos,L,R):-append(L1,[Y|L2],L),A is Pos-1,length(L1,A),append(L1,[X|L2],R).

%BUSCAR (Buscar posible omision de signos).
buscar(Pos,A,L,J,S):-((Pos == 1,(A == *),(A == +),(A == -),(A == /),(A == ^))->
append([*],L,Lr),S is 1,J=..Lr);S is 0.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder