/*13.6 Implementar una clase Fecha con miembros dato para mes, día y año. Cada objeto
de esta clase representa una fecha, que almacena el día, mes y año como enteros.
Se debe incluir un constructor por defecto, un constructor de copia, funciones de acceso,
una función reiniciar(int d, int m, int a) para reiniciar la fecha de un objeto
existente. Emplear una función de utilidad normalizar() para asegurar que los
miembros dato están en el rango correcto 1<=año, 1<=mes<=12, 1<=día<=dias(mes)
donde dias(mes) es otra función que devuelve el número de días de cada mes.*/
#include <iostream>
using namespace std;
class Fecha{
int d,m,a; // Dia Mes Anio
public:
Fecha(int d1=0, int m1=0, int a1=0) : d(d1), m(m1), a(a1){};
Fecha(const Fecha &p) : d(p.d), m(p.m), a(p.a) {}; //constructor copia
void Reiniciar(){d=0;m=0;a=0;}; //funcion que reincia el obj a 0
bool Normalizar(); // Controla que los valores de las variables sean los adecuados
void imprimir();
};
int Dias(int mes);
void Fecha::imprimir(){
cout<<d<<":"<<m<<":"<<a<<endl;
}
bool Fecha::Normalizar(){
if(1<=a && 1<=m<=12 && 1<=d<=Dias(m))
return true;
return false;
}
int main(){
Fecha d1(10,08,2009);
Fecha d2(d1);
d1.imprimir();
d2.imprimir();
d1.Reiniciar();
d1.imprimir();
d2.imprimir();
cout<<d1.Normalizar()<<endl;
cout<<d2.Normalizar()<<endl;
system("pause");
return 0;
}
int Dias(int mes){
switch(mes){
case 01: return 31; break;
case 02: return 28; break;
case 03: return 31; break;
case 04: return 30; break;
case 05: return 31; break;
case 06: return 30; break;
case 07: return 31; break;
case 08: return 31; break;
case 09: return 30; break;
case 10: return 31; break;
case 11: return 30; break;
case 12: return 31; break;
}
}