El programa compara los días que hay entre dos fechas:
#include<stdio.h>
#include<stdlib.h>
struct fecha
{
int dia, mes, year;
} fechauno, fechados;
int main (void)
{
int a, m, d, total;
printf("Dame la primera fecha más reciente (dd/mm/aa):\n");
scanf("%d*%d*%d", &fechauno.dia , &fechauno.mes, &fechauno.year);
printf("Dame la segunda fecha (dd/mm/aa):\n");
scanf("%d*%d*%d", &fechados.dia , &fechados.mes, &fechados.year);
a = (fechauno.year - fechados.year) * 365;
m = (fechauno.mes - fechados.mes) * 30;
d = fechauno.dia - fechados.dia;
total = a + m + d;
printf("\n\nHay %d días entre las dos fechas insertadas.\n");
system(" pause ");
return 0;
}
cualquier cosa que escriba me arroja como resultado "4210716"
printf("\n\nHay %d días entre las dos fechas insertadas.\n");
Si no pones la variable en el printf, es imposible que te salga bien.
Sa1uDoS
Ya le he modificado lo que decís pero aun así persiste el error :(
#include<stdio.h>
#include<stdlib.h>
struct fecha
{
int dia, mes, year;
} fechauno, fechados;
int main (void)
{
int a, m, d, total;
printf("Dame la primera fecha más reciente (dd/mm/aa):\n");
scanf("%d*%d*%d", &fechauno.dia , &fechauno.mes, &fechauno.year);
printf("Dame la segunda fecha (dd/mm/aa):\n");
scanf("%d*%d*%d", &fechados.dia , &fechados.mes, &fechados.year);
a = (fechauno.year - fechados.year) * 365;
m = (fechauno.mes - fechados.mes) * 30;
d = fechauno.dia - fechados.dia;
total = a + m + d;
printf("\n\ndías entre las dos fechas insertadas.\n");
scanf("%d",total);
system(" pause ");
return 0;
}
creo no estoy seguro
Cita de: do-while1 en 16 Abril 2013, 21:09 PM
Ya le he modificado lo que decís pero aun así persiste el error :(
Al ser "total" una suma y no estar inicializada a cero, suma a un valor basura los otros valores ==> int total=0.
Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Y si los datos los entras cada uno seguido de un enter o todos seguidos separados por un espacio funcionan. Pero entrándolos tipo 4/4/2012 no.
Cita de: do-while1 en 16 Abril 2013, 20:35 PM
cualquier cosa que escriba me arroja como resultado "4210716"
El programa dará el resultado esperado si realizas el cambio que ya te indicaron e
introduces los datos correctamente.
El problema (error lógico) se debe a que al pedir los datos indicas que el separador es '/':
printf("Dame la primera fecha más reciente (dd/mm/aa):\n");
/* ... */
printf("Dame la segunda fecha (dd/mm/aa):\n");
Pero al utilizar scanf indicas que el separador es '*':
scanf("%d*%d*%d", &fechauno.dia , &fechauno.mes, &fechauno.year);
/* ... */
scanf("%d*%d*%d", &fechados.dia , &fechados.mes, &fechados.year);
Para explicarlo mejor:
Dame la primera fecha mas reciente (dd/mm/aa):
31*01*2010
Dame la segunda fecha (dd/mm/aa):
01*01*2010
Hay 30 dias entre las dos fechas insertadas.
Un saludo