Código de Prolog - Problema resuelto

<<>>
Imágen de perfil

Problema resueltográfica de visualizaciones


Prolog

estrellaestrellaestrellaestrellaestrella(5)
Publicado el 10 de Julio del 2015 por Cesar Manuel
2.540 visualizaciones desde el 10 de Julio del 2015. Una media de 28 por semana
El archivo contiene un problema sencillo de un destacamento de estudiantes, usandose el lenguaje prolog se resolvió con el uso de funciones propias del lenguajes como: length, writeln, read, arg, bagof. Estructuras complejas , Hechos, Reglas, Listas.

Requerimientos

Se recomienda usar el swi-prolog. http://www.swi-prolog.org/

Versión 1.0
estrellaestrellaestrellaestrellaestrella(5)

Actualizado el 13 de Julio del 2015 (Creado el 10 de Julio del 2015)gráfica de visualizaciones de la versión: Versión 1.0
2.541 visualizaciones desde el 10 de Julio del 2015. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
destacamento(
            'Jose Marti',2001,'Frank',[estudiante('Cesar',m,5),estudiante('Manuel',m,5),estudiante('Raquel',f,4),estudiante('Lisandra',f,3)]
	        ).
 
 
destacamento(
            'Mella',2003,'Leopoldo',[estudiante('Cruzata',m,3),estudiante('Lukas',m,2),estudiante('Elizabet',f,4),estudiante('Diana',f,5)]
	       ).
 
 
destacamento(
            'Bartolete Perez',2011,'Bartolo',[estudiante('Diego',m,2),estudiante('Willian',m,2),estudiante('James',m,3),estudiante('Gertrudis',f,5)]
	       ).
 
 
destacamento(
           'Madrid',1991,'Mauricio',[estudiante('Luisma',m,2),estudiante('Macu',f,4),estudiante('Paz',f,5),estudiante('Soraya',f,5)]
	       ).
 
destacamento(
           'Barcelona',1991,'Xavi',[estudiante('Messi',m,3),estudiante('Valdes',f,5),estudiante('Lorena',f,5),estudiante('Vanesa',f,5)]
	       ).
 
 
 
 
		   menu:- writeln(' '),
		    writeln('Elija una funcionalidad...'),
			writeln('Nota: Al final de cada dato entrado ponga un punto(.)'),
		    writeln(' '),
		    writeln('1-)Conocer la existencia de estudiantes desaprobados dado un destacamento.'),
			writeln('2-)Conocer que sexo tiene mejor promedio.'),
			writeln('3-)Conocer uno de los estudiantes con mayor nota.'),
		    writeln('4-)Conocer el promedio de nota de un curso.'),
			read(X),writeln(' '),opcion(X).
			opcion(X):- X==1, writeln('1-)Introdusca un nombre de destacamento.'), read(N), suspenso(N),!.
			opcion(X):-	X==2, writeln('2-)Introdusca un nombre de destacamento.'), read(N), promedio(N),!.
			opcion(X):-	X==3, writeln('3-)Introdusca un nombre de destacamento.'),read(N), mayorNota(N),!.
			opcion(X):-	X==4, writeln('3-)Introdusca la fecha del curso.'),read(N), imprimir(N),!.
 
% Inciso a
getNota(estudiante(_,_,N),N).
dadoNotaEstudiante(estudiante(P,_,N),P,N).
ponchao(N):- destacamento(N,_,_,L),contar(L,C),C>0,!,writeln('Existen suspenso').
ponchao(_):- writeln('No existen suspenso').
contar([],0):-!.
contar([X|L],C):-getNota(X,V),V<3,!,contar(L,C1),C is C1+1.
contar([_|L],C):-contar(L,C).
 
% Inciso b
promedio(N):- destacamento(N,_,_,L),llenar(L,B,H),calcular(B,R),calcular(H,R1),length(B,X), Y is R/X,length(H,X1),U is R1/X1,Y>U,!,writeln('El mejor promedio es el de los varones').
promedio(_):- writeln('El mejor promedio es el de las hembras').
llenar([],[],[]):-!.
llenar([X|L],[V|R],H):- arg(2,X,S),S==m,arg(3,X,V),!,llenar(L,R,H).
llenar([X|L],R,[V|H]):- arg(3,X,V),llenar(L,R,H).
calcular([],0):-!.
calcular([X|L],P):- calcular(L,P1),P is X+P1.
 
% Inciso c
mayorNota(N):- destacamento(N,_,_,L),nota(V,L),buscarNombre(L,P,V),write('El estudiante es: '),write(P).
nota(N,[X|L]):- arg(3,X,P),mayor(N,P,L).
mayor(P,P,[]):- !.
mayor(Q,W,[X|L]):- arg(3,X,W1),W1>=W,!,mayor(Q,W1,L).
mayor(Q,W,[_|L]):- mayor(Q,W,L).
buscarNombre([],_,_):- !.
buscarNombre([X|_],P,V):-dadoNotaEstudiante(X,P1,V),!,P=P1.
buscarNombre([_|L],P,V):- buscarNombre(L,P,V).
 
% Inciso d
imprimir(F):- fecha(F,L),pintar(L,F). 												  % metodo principal
fecha(F,P):-bagof(I,prom(F,I),P).													  % obtener las fechas
prom(F,I):-destacamento(_,F,_,L),llenar(L,R),calcular(R,S),length(R,C), I is S/C.     % suma las notas
llenar([],[]):-!.									%llena la lista con las notas
llenar([X|L],[V|R]):- arg(3,X,V),llenar(L,R).
pintar([],_):- !. 									% escribir el resultado
pintar([X|L],K):- pintar(L,K),write('Promedio del curso '),write(K),write(': '),writeln(X).



Comentarios sobre la versión: Versión 1.0 (5)

juanito
29 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
Tu listado de codigo unicamente va hasta la linea 76, y el resto del codigo, como compruebo si funciona o no? Por favor enviame el resto del codigo a mi correo, muy gentil. Saludos y se ve que tienes creatividad para desarrollar ordenadamente el ejercicio.
Responder
DiegoEc
05 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
hola como dice Juanito me puedes ayudar con el codigo fuente soy de ecuador y nos estan empesando a dar este programa y tu programa me llamo la atencio, puedes ayudarme enviando a mi correo el resto del codigo te agradesco mucho
Responder
Imágen de perfil
Cesar Manuel
06 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
ahi est todo el codigo. Solo tienes que copiarlo en un fichero *.pl(esta creo que es la extension) y ejecutarlo con el swi-prolog
Responder
Diego Sani
07 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
Amigo y por si acaso tienes un programa para detectar enfermedades se humana o animal porfa quiero analizar en el prolog
Responder
Imágen de perfil
Cesar Manuel
10 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
No, mala mia por no poder ayudarte. este codigo fue de un ejercicoi final de la Asiganatura de Inteligancia Artificial en mi 4to año de la Ingenieria. Despues de eso no lo toque más
Responder

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s3214