Código C++:
Ver original
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; class MiFecha { private: int dia; int mes; int anio; bool verificaDia(int d) { if (d>0) { return true; } else { return false; } } bool verificaMes(int m) { if (m>0) { return true; } else { return false; } } bool verificaAnio(int a) { if (a>0) { return true; } else { return false; } } public: MiFecha() { dia=1; mes=1; anio=2000; } int dameDia() { return dia; } int dameMes() { return mes; } int dameAnio() { return anio; } bool fijaDia(int d) { if (verificaDia(d)) { dia=d; return true; } else { return false; } } bool fijaMes(int m) { if (verificaMes(m)) { mes=m; return true; } else { return false; } } bool fijaAnio(int a) { if (verificaAnio(a)) { anio=a; return true; } else { return false; } } }; int main() { MiFecha fecha; int dia,mes,anio,i; i=0; do { i++; cout << "Verificador de fecha\n"<< endl; cout << "Dia= " << fecha.dameDia() << endl; cout << "Mes= " << fecha.dameMes() << endl; cout << "Anio= " << fecha.dameAnio() << endl; cout << "\nDame el dia: "; cin >> dia; cout << "Dame el mes: "; cin >> mes; cout << "Dame el anio: "; cin >> anio; if (fecha.fijaDia(dia) && fecha.fijaMes(mes) && fecha.fijaAnio(anio)) { cout << "\nFecha Valida!" << endl; } else { cout << "\nFecha no valida" << endl; } } while(i<100); return 0; }
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?