Código de Prolog - Problema resuelto

<<>>
Imágen de perfil

Problema resueltográfica de visualizaciones


Prolog

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 10 de Julio del 2015 por Cesar Manuel
1.945 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(1)

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
1.946 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 (1)

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

Comentar la versión: Versión 1.0

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

http://lwp-l.com/s3214