Fandom

Scratchpad

PLE:Unidad8Ejercicio01

215,915pages on
this wiki
Add New Page
Discuss this page0 Share

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.

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();
}

Also on Fandom

Random wikia