FANDOM


Fichero fecha.h

/*
fecha.h
*/

class fecha
{
   private:
        int dia, mes, anio;
        void suma1Dia();
   public:
        fecha();
        fecha(char *c);
        fecha(int d, int m, int a);
        void leeFecha();
        void escribeFecha();
        int esBisiesto();
        void sumaDias(int d);
        bool operator==(fecha f);
        bool operator!=(fecha f);
        bool operator<(fecha f);
        bool operator>=(fecha f);
        bool operator>(fecha f);
        bool operator<=(fecha f);
        friend ostream& operator<<(ostream &o, const fecha &f);
};

Fichero fecha.cpp

/*
programa:       fecha.cpp
Descipcion:     fecha.cpp
*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include "fecha.h"

fecha::fecha()
{
        dia = 1;
        mes = 1;
        anio =1970;
}
fecha::fecha(char *c)
{
        char cd[3], cm[3], ca[5];
        // día
        cd[0] = c[0];
        cd[1] = c[1];
        cd[2] = '\0';
        dia = atoi(cd);
        // mes
        cm[0] = c[3];
        cm[1] = c[4];
        cm[2] = '\0';
        mes = atoi(cm);
        // Año
        ca[0] = c[6];
        ca[1] = c[7];
        ca[2] = c[8];
        ca[3] = c[9];
        ca[4] = '\0';
        anio = atoi(ca);
}

fecha::fecha(int d, int m, int a)
{
        dia = d;
        mes = m;
        anio = a;
}
void fecha::leeFecha()
{
        char cf[11], cd[3], cm[3], ca[5];
        // Leemos la cadena fecha
        cin >> cf;
        // día
        cd[0] = cf[0];
        cd[1] = cf[1];
        cd[2] = '\0';
        dia = atoi(cd);
        // mes
        cm[0] = cf[3];
        cm[1] = cf[4];
        cm[2] = '\0';
        mes = atoi(cm);
        // Año
        ca[0] = cf[6];
        ca[1] = cf[7];
        ca[2] = cf[8];
        ca[3] = cf[9];
        ca[4] = '\0';
        anio = atoi(ca);
}

void fecha::escribeFecha()
{
        cout << dia << '/' << mes << '/' << anio;
}

int fecha::esBisiesto()
{
        if(anio % 400 == 0 || anio % 4 == 0 && anio % 100 != 0)
                return 1;
        else
                return 0;
}

void fecha::suma1Dia()
{
        dia++;
        if(dia > 31 && (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12))
        {
                dia = 1;
                mes++;
        }
        else if(dia > 30 && (mes == 4 || mes == 6 || mes == 9 || mes == 11 ))
        {
                dia = 1;
                mes++;
        }
        else // febrero
        {
                if(esBisiesto())
                {
                        if(dia > 29)
                        {
                                dia = 1;
                                mes++;
                        }
                }
                else // no bisiesto
                {
                        if(dia > 28)
                        {
                                dia = 1;
                                mes++;
                        }
                }
        }
        // Controlamos que el mes no se sale de rango
        if(mes > 12)
        {
                mes = 1;
                anio++;
        }
}

void fecha::sumaDias(int d)
{
        while(d > 0)
        {
                suma1Dia();
                d--;
        }
}

bool fecha::operator==(fecha f)
{
        return anio == f.anio && mes == f.mes && dia == f.dia;
}

bool fecha::operator!=(fecha f)
{
        return !(*this == f);
}

bool fecha::operator<(fecha f)
{
        bool res= false;
        if(anio < f.anio)
                res = true;
        else if(anio == f.anio && mes < f.mes)
                res = true;
        else if(anio == f.anio && mes == f.mes && dia < f.dia)
                res = true;
        return res;
}

bool fecha::operator>=(fecha f)
{
        return *this > f || *this == f;
}

bool fecha::operator>(fecha f)
{
        bool res= false;
        if(anio > f.anio)
                res = true;
        else if(anio == f.anio && mes > f.mes)
                res = true;
        else if(anio == f.anio && mes == f.mes && dia > f.dia)
                res = true;
        return res;
}

bool fecha::operator<=(fecha f)
{
        return *this < f || *this == f;
}

ostream &operator<<(ostream &o, const fecha &f)
{
        o << f.dia;
        o << '/';
        o << f.mes;
        o << '/';
        o << f.anio;
        o << '/';
        return o;
}

Fichero Ej01.cpp

/*
programa:       ej01
Descipcion:     Usamos clase fecha.
*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include "fecha.h"

void main()
{
        fecha f1,f2;
        int n;
        cout << "Introduzca una fecha ";
        f1.leeFecha();
        cout << endl << "La fecha es ";
        f1.escribeFecha();
        cout << endl << "Introduzca el número de dias a sumar ";
        cin >> n;
        f1.sumaDias(n);
        cout << endl << "La fecha nueva es ";
        f1.escribeFecha();

        cout << "Introduzca otra fecha ";
        f2.leeFecha();
        cout << endl << "La fecha es ";
        f2.escribeFecha();

        if(f1 == f2)
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " es igual que la fecha: "; f2.escribeFecha();
        }
        else
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " no es igual que la fecha: "; f2.escribeFecha();
        }

        if(f1 != f2)
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " es distinta que la fecha: "; f2.escribeFecha();
        }
        else
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " no es distinta que la fecha: "; f2.escribeFecha();
        }

        if(f1 > f2)
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " es mayor que la fecha: "; f2.escribeFecha();
        }
        else
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " no es mayor que la fecha: "; f2.escribeFecha();
        }

        if(f1 >= f2)
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " es mayor o igual que la fecha: "; f2.escribeFecha();
        }
        else
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " no es mayor o igual que la fecha: "; f2.escribeFecha();
        }

        if(f1 < f2)
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " es menor que la fecha: "; f2.escribeFecha();
        }
        else
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " no es menor que la fecha: "; f2.escribeFecha();
        }

        if(f1 <= f2)
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " es menor o igual que la fecha: "; f2.escribeFecha();
        }
        else
        {
                cout << endl << "La fecha: "; f1.escribeFecha();
                cout << " no es menor o igual que la fecha: "; f2.escribeFecha();
        }

        getch();
}

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.