Fandom

Scratchpad

PLE:Unidad4Ejercicio21

219,571pages on
this wiki
Add New Page
Discuss this page0 Share
/*
Programa:         Unidad4Ejercicio21.cpp
Fecha:            19/01/2006
Descripción:      Estructura fecha.

*/
#include <iostream>
#include <conio>
#include <stdlib>
#include <time>
using namespace std;

struct fecha
{
      int dia;
      int mes;
      int anyo;
};

void leeFecha(fecha &f);
void escribeFecha(fecha f);
void sumaDia(fecha &f);
void sumaDias(fecha &f, unsigned int n);
bool esFinAnyo(fecha f);
bool esFinMes(fecha f);
bool esAniversario(fecha f1, fecha f2);
bool esIgual(fecha f1, fecha f2);
bool esDistinta(fecha f1, fecha f2);
bool esMenor(fecha f1, fecha f2);
bool esMenorIgual(fecha f1, fecha f2);
bool esMayor(fecha f1, fecha f2);
bool esMayorIgual(fecha f1, fecha f2);

void main()
{
      fecha f1, f2;
      unsigned int d;

      cout << "Introduzca una fecha ";
      leeFecha(f1);
      cout << "\nLa fecha inrtoducida es ";
      escribeFecha(f1);

      if(esFinMes(f1))
            cout << "\nEs fin de mes";
      else
            cout << "\nNO es fin de mes";

      if(esFinAnyo(f1))
            cout << "\nEs fin de año";
      else
            cout << "\nNO es fin de año";

      sumaDia(f1);
      cout << "\nLafecha del dia siguiente es: ";
      escribeFecha(f1);

      cout << "\nIntroduzca el numero de dias a sumar ";
      cin >> d;

      sumaDias(f1,d);
      cout << "\nLa fecha obtenida es: ";
      escribeFecha(f1);

      cout << "Introduzca otra fecha ";
      leeFecha(f2);

      if(esAniversario(f1,f2))
            cout << "\nEs aniversario de la primera fecha";
      else
            cout << "\nNo es aniversario de la primera fecha";

      if(esIgual(f1,f2))
            cout << "\nLas fechas son iguales";
      else
            cout << "\nLas fechas no son iguales";

      if(esMenor(f1,f2))
            cout << "\nLa primera es menor que la segunda";
      else
            cout << "\nLa primera no es menor que la segunda";


      cin.ignore();
      cin.get();
}

void leeFecha(fecha &f)
{
      char cfecha[14];
      char cdia[3];
      char cmes[3];
      char canyo[8];
      int i;

      cin >> cfecha;

      for(i = 0; i < 2; i++)
            cdia[i] = cfecha[i];
      cdia[i] = '\0';

      for(i = 3; i < 5; i++)
            cmes[i - 3] = cfecha[i];
      cmes[i - 3] = '\0';

      for(i = 6; i < strlen(cfecha) ; i++)
            canyo[i - 6] = cfecha[i];
      canyo[i - 6] = '\0';

      f.dia = atoi(cdia);
      f.mes = atoi(cmes);
      f.anyo = atoi(canyo);
}

void escribeFecha(fecha f)
{
      cout << f.dia << '/' << f.mes << '/' << f.anyo;
}

bool esBisiesto(fecha f)
{
      if((f.anyo % 400 == 0) || (f.anyo % 4 ==0 && f.anyo % 100 != 0))
            return true;
      else
            return false;
}

void sumaDia(fecha &f)
{
      // comprobamos si es fin de año
      if(esFinAnyo(f)) {
            f.dia = 1;
            f.mes = 1;
            f.anyo++;
      }else if(esFinMes(f)) {
            f.dia = 1;
            f.mes++;
      }else {
            f.dia++;
      }
}

void sumaDias(fecha &f, unsigned int n)
{
      for(unsigned int i=0; i < n; i++)
            sumaDia(f);
}

bool esFinAnyo(fecha f)
{
      if(f.dia == 31 && f.mes == 12)
            return true;
      else
            return false;
}

bool esFinMes(fecha f)
{
      if((f.mes == 1 || f.mes == 3 || f.mes == 5 || f.mes == 7 ||
      f.mes == 8 || f.mes == 10 || f.mes == 12) && f.dia == 31)
            return true;
      else if((f.mes == 4 || f.mes == 6 || f.mes == 9 ||
      f.mes == 11) && f.dia == 30)
            return true;
      else if(f.mes == 2 && f.dia == 28 && !esBisiesto(f))
            return true;
      else if(f.mes == 2 && f.dia == 29 && esBisiesto(f))
            return true;
      else
            return false;
}

bool esAniversario(fecha f1, fecha f2)
{
      if(f1.dia == f2.dia && f1.mes == f2.mes)
            return true;
      else
            return false;
}

bool esIgual(fecha f1, fecha f2)
{
      if(f1.dia == f2.dia && f1.mes == f2.mes && f1.anyo == f2.anyo)
            return true;
      else
            return false;
}

bool esDistinta(fecha f1, fecha f2)
{
      return !esIgual(f1,f2);
}

bool esMenor(fecha f1, fecha f2)
{
      if(f1.anyo < f2.anyo)
            return true;
      else if(f1.anyo == f2.anyo && f1.mes < f2.mes)
            return true;
      else if(f1.anyo == f2.anyo && f1.mes == f2.mes && f1.dia < f2.dia)
            return true;
      else
            return false;
}

bool esMenorIgual(fecha f1, fecha f2)
{
      return (esMenor(f1,f2) || esIgual(f1,f2));
}

bool esMayor(fecha f1, fecha f2)
{
      return !esMenorIgual(f1,f2);
}

bool esMayorIgual(fecha f1, fecha f2)
{
      return (esMayor(f1,f2) || esIgual(f1,f2));
}

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.

Also on Fandom

Random wikia