Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/11/2013, 14:40
carrod9200
 
Fecha de Ingreso: septiembre-2013
Mensajes: 8
Antigüedad: 11 años, 3 meses
Puntos: 0
Validar fecha C++

Tengo este código para validar fechas:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. class MiFecha
  8. {
  9. private:
  10.     int dia;
  11.     int mes;
  12.     int anio;
  13.     bool verificaDia(int d)
  14.     {
  15.         if (d>0)
  16.         {
  17.             return true;
  18.         }
  19.         else
  20.         {
  21.             return false;
  22.         }
  23.     }
  24.     bool verificaMes(int m)
  25.     {
  26.         if (m>0)
  27.         {
  28.             return true;
  29.         }
  30.         else
  31.         {
  32.             return false;
  33.         }
  34.     }
  35.     bool verificaAnio(int a)
  36.     {
  37.         if (a>0)
  38.         {
  39.             return true;
  40.         }
  41.         else
  42.         {
  43.             return false;
  44.         }
  45.     }
  46. public:
  47.     MiFecha()
  48.     {
  49.         dia=1;
  50.         mes=1;
  51.         anio=2000;
  52.     }
  53.     int dameDia()
  54.     {
  55.         return dia;
  56.     }
  57.     int dameMes()
  58.     {
  59.         return mes;
  60.     }
  61.     int dameAnio()
  62.     {
  63.         return anio;
  64.     }
  65.     bool fijaDia(int d)
  66.     {
  67.         if (verificaDia(d))
  68.         {
  69.             dia=d;
  70.             return true;
  71.         }
  72.         else
  73.         {
  74.             return false;
  75.         }
  76.     }
  77.     bool fijaMes(int m)
  78.     {
  79.         if (verificaMes(m))
  80.         {
  81.             mes=m;
  82.             return true;
  83.         }
  84.         else
  85.         {
  86.             return false;
  87.         }
  88.     }
  89.     bool fijaAnio(int a)
  90.     {
  91.         if (verificaAnio(a))
  92.         {
  93.             anio=a;
  94.             return true;
  95.         }
  96.         else
  97.         {
  98.             return false;
  99.         }
  100.     }
  101. };
  102.  
  103. int main()
  104. {
  105.     MiFecha fecha;
  106.     int dia,mes,anio,i;
  107.     i=0;
  108.     do
  109.     {
  110.         system(LIMPIAR);
  111.         i++;
  112.         cout << "Verificador de fecha\n"<< endl;
  113.         cout << "Dia=  " << fecha.dameDia() << endl;
  114.         cout << "Mes=  " << fecha.dameMes() << endl;
  115.         cout << "Anio= " << fecha.dameAnio() << endl;
  116.         cout << "\nDame el dia: ";
  117.         cin >> dia;
  118.         cout << "Dame el mes: ";
  119.         cin >> mes;
  120.         cout << "Dame el anio: ";
  121.         cin >> anio;
  122.         if (fecha.fijaDia(dia) && fecha.fijaMes(mes) && fecha.fijaAnio(anio))
  123.         {
  124.             cout << "\nFecha Valida!" << endl;
  125.         }
  126.         else
  127.         {
  128.             cout << "\nFecha no valida" << endl;
  129.         }
  130.         getchar();
  131.     printf("\nPresione entrar para continuar...");
  132.     getchar();
  133.     }
  134.     while(i<100);
  135.     return 0;
  136. }

La idea del código es que cuando se ponga una fecha no válida, en este caso cualquier dia, mes o año menor que 0, los datos que ya están registrados se queden sin cambiar.
Pero el problema que tengo es que sólo funciona cuando el día es incorrecto, ya que si el mes o año es incorrecto, no se cambian ellos, pero el resto de datos sí.

¿Alguien sabe cómo hacerle para que se pueda validar de forma correcta?