Título: [Ayuda] Fallo de estructura
Publicado por: jospar en 18 Enero 2015, 17:57 pm
Buenas, alguien puede decirme el fallo de la funcion leeFecha definida en fecha.c??? El fichero es: #include <stdio.h>
struct fecha leeFecha() { printf("Introduzca la fecha en formato dd/mm/aaaa :"); scanf("%d/%d/%d", &leeFecha.dia, &leeFecha.mes, &leeFecha.año); } int compruebaFecha(struct fecha*pFecha) { int resul; int bis; bis = esBisiesto(*pFecha); switch(pFecha->mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(pFecha->dia > 31 || pFecha->dia == 0) resul = 0; else resul = 1; break; case 4: case 6: case 9: case 11: if(pFecha->dia > 30 || pFecha->dia == 0) resul = 0; else resul = 1; break; case 2: if (bis == 0) if(pFecha->dia > 28 || pFecha->dia == 0) resul = 0; else resul = 1; else if(pFecha->dia > 29 || pFecha->dia == 0) resul = 0; else resul = 1; break; default: resul=0; } return resul; } int comparaFecha(struct fecha f1, struct fecha f2) { int resul; if(f1.año<f2.año) resul=1; else if(f1.año>f2.año) resul=-1; else if(f1.año==f2.año) { if(f1.mes<f2.mes) resul=1; else if(f1.mes>f2.mes) resul=-1; else if(f1.mes==f2.mes) { if(f1.dia<f2.dia) resul=1; else if(f1.dia>f2.dia) resul=-1; else if(f1.dia==f2.dia) resul=0; } } return resul; } void imprimeFecha(struct fecha f) { printf("%d/%d/%d", f.dia, f.mes, f.año); } int esBisiesto(struct fecha f) { int resul; if (0 == (f.año % 4)) { if (0 == (f.año % 100)) { if (0 == (f.año % 400)) resul = 1; else resul=0; } else resul = 1; } else resul=0; return resul; }
Por si necesitais saber donde esta la llamada a la funcion os paso tambien estructura.c:#include <stdio.h> #include "fecha.h" #include "fecha.c" int main() { struct fecha f1; struct fecha f2; struct fecha *pf1=NULL; struct fecha *pf2=NULL; f1 = leeFecha(); pf1=&f1; if (compruebaFecha(pf1) == 0) printf("Formato de fecha incorrecto\n"); else { f2 = leeFecha(); pf2=&f2; if (compruebaFecha(pf2) == 0) printf("Formato de fecha incorrecto\n"); else { if(comparaFecha(f1,f2)>0) { imprimeFecha(f1); printf(" es anterior a "); imprimeFecha(f2); printf("\n"); } else if(comparaFecha(f1,f2)<0) { imprimeFecha(f1); printf(" es posterior a "); imprimeFecha(f2); printf("\n"); } else if(comparaFecha(f1,f2)==0) { imprimeFecha(f1); printf(" es igual a "); imprimeFecha(f2); printf("\n"); } } if(esBisiesto(f1)==1 && esBisiesto(f2)==1) printf(AMBAS_BISIESTO); else if(esBisiesto(f1)==1 && esBisiesto(f2)==0) printf(PRIMERA_BISIESTO); else if(esBisiesto(f1)==0 && esBisiesto(f2)==1) printf(SEGUNDA_BISIESTO); else if(esBisiesto(f1)==0 && esBisiesto(f2)==0) printf(NINGUNA_BISIESTO); } return 0; }
Título: Re: [Ayuda] Fallo de estructura
Publicado por: avesudra en 18 Enero 2015, 18:53 pm
¿Puedes decir como está definida la estructura fecha? Es que no la veo por ningún sitio. Por otra parte esto es una aberración: struct fecha leeFecha() { printf("Introduzca la fecha en formato dd/mm/aaaa :"); scanf("%d/%d/%d", &leeFecha???????.dia, &leeFecha???????.mes, &leeFecha???????.año); }
leeFecha es una función no una estructura... Además la función leeFecha devuelve una estructura tipo fecha y no veo ningún return. Saludos.
Título: Re: [Ayuda] Fallo de estructura
Publicado por: jospar en 18 Enero 2015, 20:51 pm
Ahhh ya se donde estaba el fallo!! Gracias por el comentario aberracion jajajaja no habia mejor manera de llamarlo!! el fallo es el return y la manera de inicializar la estructura leeFecha como tu has dicho muchas gracias!
Título: Re: [Ayuda] Fallo de estructura
Publicado por: avesudra en 18 Enero 2015, 22:18 pm
Ahhh ya se donde estaba el fallo!! Gracias por el comentario aberracion jajajaja no habia mejor manera de llamarlo!! el fallo es el return y la manera de inicializar la estructura leeFecha como tu has dicho muchas gracias!
Pero leeFecha no es una estructura es una función... ten cuidado con eso, que funcione no quiere decir que esté bien. Saludos.
|