Código de Prolog - Problema resuelto

<<>>
Imágen de perfil
Val: 8
Ha mantenido su posición en Prolog (en relación al último mes)
Gráfica de Prolog

Problema resueltográfica de visualizaciones


Prolog

Publicado el 10 de Julio del 2015 por Cesar Manuel (5 códigos)
5.728 visualizaciones desde el 10 de Julio del 2015
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 (Publicado el 10 de Julio del 2015)gráfica de visualizaciones de la versión: Versión 1.0
5.729 visualizaciones desde el 10 de Julio del 2015
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
5 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
6 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
7 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
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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3214