rendered paste body#include <cstring>#include <iostream>#include "tcalendario.h"using namespace std;TCalendario::TCalendario(){ dia = 1; mes = 1; anyo = 1900; mensaje = NULL;};TCalendario::TCalendario(int d, int m, int a, char *mens){ if (a>=1900) { anyo=a; if (m<=12 && m>=1) { mes=m; if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) if (d<=31 && d>=1) dia=d; else if (m == 2) { if (Bisiesto(*this)) { if(d<=29 && d>=1) dia=d; } else { if(d<=28 && d>=1) dia=d; } } else { if (d<=30 && d>=1) dia=d; } } mensaje = new char[strlen(mens)+1]; if(mensaje == NULL) return; strcpy(mensaje, mens); } else { dia, mes, anyo = 1; mensaje == NULL; }};TCalendario::TCalendario(const TCalendario &cal){ dia = cal.dia; mes = cal.mes; anyo = cal.anyo; mensaje = new char[strlen(cal.mensaje)+1]; if(mensaje == NULL) return; strcpy(mensaje, cal.mensaje);};TCalencario::~TCalendario(){ dia = mes = anyo = 0; mensaje == NULL;};TCalendario&TCalendario::operator=(TCalendario &cal){ dia = cal.dia; mes = cal.mes; anyo = cal.anyo; if(mensaje != NULL) delete mensaje; if(cal.mensaje == NULL) mensaje==NULL; else mensaje = new char[strlen(cal.mensaje)+1]; if(mensaje == NULL) return *this; strcpy(mensaje, cal.mensaje);}TCalendarioTCalendario::operator++(int a){ TCalendario mem(*this); dia++; if(mes==2 && dia >28 && !Bisiesto(*this)) { dia = 1; mes++; } else if ((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) && dia >31) { dia = 1; mes++; if(mes>12) { mes = 1; anyo++; } } else if(dia >30) { dia=1; mes++; } return mem;}TCalendario&TCalendario::operator++(){ dia++; if(mes==2 && dia >28 && !Bisiesto(*this)) { dia = 1; mes++; } else if ((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) && dia >31) { dia = 1; mes++; if(mes>12) { mes = 1; anyo++; } } else if(dia >30) { dia=1; mes++; } return *this;}TCalendarioTCalendario::operator--(int a){ TCalendario mom(*this); dia--; if (dia == 0) { mes--; if(mes == 0) { mes==12; anyo--; } if(mes == 2 && Bisiesto(*this)) dia == 29; else if(mes == 2 && !Bisiesto(*this)) dia == 28; else if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) dia == 31; else dia == 30; } if (anyo<1900) { dia=mes=anyo=1; mensaje == NULL; } return mom;}TCalendario&TCalendario::operator--(){ dia--; if (dia == 0) { mes--; if(mes == 0) { mes==12; anyo--; } if(mes == 2 && Bisiesto(*this)) dia == 29; else if(mes == 2 && !Bisiesto(*this)) dia == 28; else if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) dia == 31; else dia == 30; } if (anyo<1900) { dia=mes=anyo=1; mensaje == NULL; } return *this;}TCalendarioTCalendario::TCalendario operator+(int dias){ if (dias > 0) { dia = dia + dias; while(dia>28) { dia = dia + dias; if((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) && dia>31) { mes++; dia = dia - 31; } else if(mes == 2 && Bisiesto(*this) && dia >29) { mes++; dia = dia - 29; } else if(mes == 2 && !Bisiesto(*this) && dia >28) mes++; dia = dia - 28; else if(dia>30) { mes++; dia = dia - 30; } if(mes>12) { anyo++; mes = 1; } } }}TCalendarioTCalendario::operator-(int dias){ dia=dia-dias; while(dia<0) { if(mes==2 || mes==4 || mes==6 || mes==9 || mes==11) { mes--; dia = 30 + dia; } else if(mes == 3 && !Bisiesto(*this)) { mes--; dia = 28 - dia; } else if(mes == 3 && Bisiesto(*this)) { mes--; dia = 29 - dia; } else if(mes == 1) { mes = 12; dia = 31 - dia; anyo--; } else { mes--; dia = 31 - dia; } } if(dia=0) { if(mes==2 || mes==4 || mes==6 || mes==9 || mes==11) { mes--; dia = 31; } else if(mes == 3 && !Bisiesto(*this)) { mes--; dia = 28; } else if(mes == 3 && Bisiesto(*this)) { mes--; dia = 29; } else if(mes == 1) { mes = 12; dia = 31; anyo--; } else { mes--; dia = 30; } } if(anyo<1900) { dia = mes = anyo = 1; mensaje = NULL; }}bool TCalendario::operator==(TCalendario &cal){ if(dia == cal.dia && mes == cal.mes && anyo == cal.anyo && !strcmp(mensaje, cal.mensaje)) return true; else return false;}bool TCalendario::operator>(TCalendario &cal){ if(anyo < cal.anyo) return false; else { if(anyo == cal.anyo) { if(mes < cal.mes) return false; else { if(mes == cal.mes) { if(dia < cal.dia) return false; else if(dia == cal.dia) { if (strlen(mensaje)<=(strlen(cal.mensaje))) return false; else return true; } else return true; } else return true; } } else return true; } return true;} bool TCalendario::operator<(TCalendario &cal){ if(anyo > cal.anyo) return false; else { if(anyo == cal.anyo) { if(mes > cal.mes) return false; else { if(mes == cal.mes) { if(dia > cal.dia) return false; else if(dia == cal.dia) { if (strlen(mensaje)>=strlen(cal.mensaje)) return false; else return true; } else return true; } else return true; } } else return true; } return true;} boolTCalendario::ModFecha (int d, int m, int a){ if (a>=1900) { if (m<=12 && m>=1) { mes=m; if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) { if (d<=31 && d>=1) { dia=d; return true; } } else if (m == 2) { if (Bisiesto(*this)) { if(d<=29 && d>=1) { dia=d; return true; } else { if(d<=28 && d>=1) return true; dia=d; } } else { if (d<=30 && d>=1) return true; dia=d; } } else return false; } else return false;}}voidTCalendario::ModMensaje(char *mens){ if(mens != NULL) delete mensaje; if(mens == NULL) mensaje==NULL; else mensaje = new char[strlen(mens)+1];}boolTCalendario::EsFecha(){ if(anyo>1900) return true; else { if(dia==1 && mes ==1) return false; else return true; }}boolTCalendario::EsVacio(){ if(dia=1 && mes=1 && anyo=1900 && mensaje==NULL) return true;}intTCalendario::Dia(){ return dia;}intTCalendario::Mes(){ return mes;}intTCalendario::Anyo(){ return anyo;}intTCalendario::Dia(){ return dia;}charTCalendario::*Mensaje(){ return *mensaje;}ostream& operator<<(ostream &, TCalendario &cal){ os << cal.dia << "/" << cal.mes <<"/" << cal.anyo << "\""; if(cal.mensaje =! NULL) os<<cal.mensaje<< "\""; return os;}boolBisiesto(const TCalendario &calen){ if (calen.anyo % 4 == 0) { if(calen.anyo % 100 == 0) if(calen.anyo % 400 != 0) return false; return true; } return false;}