All pastes #280048 Raw Edit

Mine

public cpp v1 · immutable
·published 2006-12-15 16:34 UTC
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;}