Programación General => C/C++ => Mensaje iniciado por: tiluca en Domingo 31 de Mayo de 2009, 16:54
Título: consejos para un ejercicio porfa
Publicado por: tiluca en Domingo 31 de Mayo de 2009, 16:54
Buenas soy un poco novata en esto, lo primero presentarme y dar las gracias al foro por la cantidad de gente que aprendera con el y con el que yo espero aprender tambien jeje. çBueno el programa que me esta volviendo loca ahora es este.
Realizar un procedimiento que reciba como entradas un día, un mes y un año, y devuelva la fecha del día siguiente a través de los mismos parámetros, además de un código de error (0 si todo ha ido bien, y 1 si no se ha podido calcular). Habrá que tener en cuenta que un año es bisiesto si es múltiplo de 4, excepto cuando es múltiplo de 100 y no lo es de 400 (por ejemplo, 1984 y 2000 son bisiestos, pero 1800 no lo es). Este procedimiento se apoyará en una función que también deberá realizar el alumno, la cual comprobará si la fecha que se le pasa por parámetro es correcta o no (siguiendo los mismos criterios para el año bisiesto).
Lo primero yo solo estoy intentando crear la funcion, que el usuario meta la fecha y q me de la siguiente teniendo en cuenta q si dia mas de 30 incremente un mes ect.. pero no estoy metiendo aun lo de los años bisiestos. bueno esto es lo que he hecho
void calfecha (int *dia, int *mes, int *aggno);
int main (){ int d, m,a; do{ printf("introduce un dian"); scanf("%i",&d); }while ((d<0) || (d>30)); do{ printf("introduce un mesn"); scanf("%i",&m); }while ((d<0) || (d>12)); printf("introduce un aggnon"); scanf("%i",&a); calfecha(&d, &m, &a); printf("la fecha del dia siguiente es:%i dia, %i mes, %i agno n",d,m,a); system ("pause"); return 0; } //creo un procedimiento void calfecha (int *dia, int *mes, int *aggno){ //mi intencion es decirle que si me han dado un dia valido lo aumente int a,d,m; *dia++; if (dia==30) *mes++;
if (mes==12) *aggno++; }
me da este error ISO C++ forbids comparison between pointer and integer supongo que por los if pero no entiendo muy bien porque, alguien puede ayduarme?
Título: Re: resolver un ejercicio porfa
Publicado por: tiluca en Domingo 31 de Mayo de 2009, 17:20
lo he mejorado un poco voy asi. int main (){ int d, m,a; do{ printf("introduce un dian"); scanf("%i",&d); }while ((d<0) || (d>30)); do{ printf("introduce un mesn"); scanf("%i",&m); }while ((d<0) || (d>12)); printf("introduce un aggnon"); scanf("%i",&a); calfecha(&d, &m, &a); printf("la fecha del dia siguiente es:%i dia, %i mes, %i agno n",d,m,a); system ("pause"); return 0; } //creo un procedimiento void calfecha (int *dia, int *mes, int *aggno){ //mi intencion es decirle que si me han dado un dia valido lo aumente int a,d,m; ++*dia; if (d==30){ ++*mes; } else *mes; if (m==12){ ++*aggno; } else *aggno; }
al poner ++*dia el dia se incrementaba bien pero cuando he puesto el if else para meses se queda pillado y me pide todo el rato introduce mes introduce mes, alquien puede decirme porque?
Título: Re: consejos para un ejercicio porfa
Publicado por: tiluca en Domingo 31 de Mayo de 2009, 20:32
bueno he cambiado algunas cosas y lo tengo as pero sigue sin salirme cuando le meto el dia 30 es cuando da fallos en cambio del mes 12 al cambio de año y mes 1 no
int main (){ int d, m,a; do{ printf("introduce un dian"); scanf("%i",&d); }while ((d<0) || (d>30)); do{ printf("introduce un mesn"); scanf("%i",&m); }while ((d<0) || (d>12)); printf("introduce un aggnon"); scanf("%i",&a); calfecha(&d, &m, &a); printf("la fecha del dia siguiente es:%i dia, %i mes, %i agno n",d,m,a); system ("pause"); return 0; }
void calfecha (int *dia, int *mes, int *aggno){ int a,d,m;
printf("La fecha del dia siguiente es %d / %d / %d n",fecha[0],fecha[1],fecha[2]);
return(0);
}
asumiendo lo que dijiste (que si era 30 pues entonces cambiaba de mes), le hice algunas pruebas y parece funcionar. Vez que solo debes fijarte en las condiciones para evaluar cuando cambiar el mes o el año o el dia.
Saludos!
Título: Re: consejos para un ejercicio porfa
Publicado por: tiluca en Lunes 1 de Junio de 2009, 15:55
m uchas gracias, la verdad que ya lo cosegui arreglar pero me ha costado un monton, ahora voy a por el siguiente y espero no tener que pedir ayuda jeje. saludos