Advertisement
lukhavi

Fechas2

Aug 29th, 2019
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.52 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>   //getch()
  3.  
  4. #define true 1
  5. #define false 0
  6.  
  7. int digitaNumeroDeMes(void);
  8. int digitaNumeroDeDia(int mes);
  9. int digitaAno(void);
  10.  
  11.  
  12. /*Abril, Junio, Septiembre y Noviembre. = 30 dias
  13. Enero, Marzo, Mayo, Julio, Agosto, Octubre y Diciembre = 31 dias
  14. Febrero = 28 dias excepto ano bisiesto que son 29 dias
  15.  */
  16.  
  17.  /*Casos
  18.     1.- mes == Febrero y dias mayor a 28
  19.     2.- mes = Abril, Junio, Septiembre y Noviembre && dia mayor a 30
  20.     3.- Falta implementar ano bisiesto para el mes de febrero.
  21.  */
  22.  
  23. struct MonthDay{
  24.     char *mes;
  25.     char dia;
  26. }mesydias[]={ // 12 elementos MonthDay
  27.     {"Enero",31},           //0
  28.     {"Febrero",28},
  29.     {"Marzo",31},           //2
  30.     {"Abril",30},
  31.     {"Mayo",31},            //4
  32.     {"Junio",30},  
  33.     {"Julio",31},           //6
  34.     {"Agosto",31},          //7
  35.     {"Septiembre",30},
  36.     {"Octubre",31},         //9
  37.     {"Noviembre",30},
  38.     {"Diciembre",31}};      //11
  39. //#define N_MESES sizeof(mesydias)/sizeof(mesydias[0])
  40.  
  41. enum Mes {ENERO = 1, FEBRERO, MARZO, ABRIL, MAYO, JUNIO,JULIO,AGOSTO,SEPTIEMBRE,
  42.     OCTUBRE,NOVIEMBRE, DICIEMBRE};
  43.  
  44. int main (int argc, char* argv[]){
  45.    
  46. int mes,dia;
  47.  
  48.     dia = digitaNumeroDeDia(mes=digitaNumeroDeMes());
  49.  
  50.     printf("La fecha indicada es: %i de %s del %i\n",dia,mesydias[mes-1].mes,digitaAno());
  51.            
  52.     getch();
  53.     return 0;
  54. }
  55.  
  56. // entre 1 y 12 son los meses
  57. int digitaNumeroDeMes(void){
  58.     short seguir_mes;
  59.     int mes;
  60.         do{
  61.             printf("DIGITE EL NUMERO DEL MES QUE DESEA VER\n");
  62.             scanf("%i", &mes);
  63.             seguir_mes = false;
  64.             if(mes<=0 || mes>12){
  65.                 printf("El numero del mes ingresado no es valido\n");
  66.                 seguir_mes = true;
  67.                 //continue;
  68.             }
  69.         }while(seguir_mes);
  70.        
  71.         return mes;
  72. }
  73. // dias entre 1 y 31 maximo dependiendo del mes.
  74. int digitaNumeroDeDia(int mes){
  75.     short seguir_dia;
  76.     int dia;
  77.     do{
  78.             printf("DIGITE EL DIA DEL RESPECTIVO MES\n");
  79.             scanf("%i", &dia);
  80.             seguir_dia = false;
  81.             if(dia<1 || dia>31){    //  dia inexistente
  82.                 printf("El dia %i indicado no es valido\n",dia);
  83.                 seguir_dia = true;
  84.             }else if(mes==FEBRERO && dia>28){
  85.                 printf("El dia %i para el mes %i no es valido\n",dia,mes);
  86.                 seguir_dia = true;
  87.             }else if((mes==ABRIL||mes==JUNIO||mes==SEPTIEMBRE||mes==NOVIEMBRE)&&dia==31){
  88.                 printf("El dia %i para el mes %i no es valido\n",dia,mes);
  89.                 seguir_dia = true;
  90.             }  
  91.         }while(seguir_dia);
  92.        
  93.         return dia;
  94. }
  95.  
  96. int digitaAno(void){
  97.     int ano;
  98.         do{
  99.             printf("DIGITE EL ANO DEL RESPECTIVO MES\n");
  100.             scanf("%i", &ano);
  101.             if(ano<0)
  102.                 printf("El numero del ano ingresado no es valido\n");
  103.             }while(ano<0);
  104.         return ano;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement