|
#include <stdio.h> #define TRUE 1 #define FALSE 0 int correcta_fecha(int,int,int); int bisiesto(int); void main() { int dia,mes,anio; printf("Dame una fecha:(dd-mm-aaaa)"); scanf("%d-%d-%d",&dia,&mes,&anio); if (!correcta_fecha(dia,mes,anio)) printf("\nLa fecha no es correcta."); } int correcta_fecha(int dia,int mes,int anio) { int d; switch (mes) { case 4: case 6: case 9: case 11:d=30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: d=31; break; case 2: if (bisiesto(anio)) d=29; else d=28; break; default: return FALSE; } if (dia<=d) { if (dia<d) dia++; else { dia=1; if (mes==12) { mes=1; anio++; } else mes++; } printf("\nEl proximo dia sera:%2d-%2d-%d.",dia,mes,anio); return TRUE; } else return FALSE; } /* Un ano es bisiesto cuando es multiplo de 4 pero no de 100 o multiplo de 400. */ int bisiesto(int anio) { if ((anio%4==0 && anio%100!=0) || (anio%400==0)) return TRUE; return FALSE; } http://2141.alumnos.utem.cl/~dcarrasco/cs-de-la-comp-ejercicios-resueltos.doc
|