Calcular la fecha que será un día después de una fecha determinada

Programa C++ que pide por teclado una fecha en formato día, mes y año y calcula y muestra la fecha que será un día después.
Los valores que se introducen por teclado son tres enteros correspondientes al día, mes y año y el programa calcula la fecha que se obtiene al sumar uno al día introducido.
Por ejemplo: 
Si se introduce día: 12 mes: 5 año: 2022 el programa mostrará: 13-05-2022
Si se introduce día: 31 mes: 1 año: 2022 el programa mostrará: 01-02-2022
Si se introduce día: 31 mes: 31 año: 2022 el programa mostrará: 01-01-2023
etc.
 
Como se trata de un ejercicio básico para practicar las instrucciones condicionales if .. else anidadas supondremos que los datos introducidos para la fecha son válidos. Los valores introducidos para el día serán válidos para el mes que se introduce, por ejemplo si el valor del día es 31 el mes que se introduce corresponderá a un més de 31 días. Supondremos también que enero tiene 28 días. No se contemplan los años bisiestos. 
/*
 * Programa C++
 * Programa que calcula la fecha que será un día después de 
 * una fecha determinada
 */
#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
    //declaración de variables
    int d, m, a;
    system("cls");
	
    //se introducen los valores del día, mes y año
    cout << "\nIntroduce dia: ";
    cin >> d;
    cout << "\nIntroduce mes: ";
    cin >> m;
    cout << "\nIntroduce anio: ";
    cin >> a;
    // suponemos que la fecha leida es correcta
    // y suponemos febrero siempre con un máximo de 28 días                                                       

    //se suma 1 al día
    d++;
    if(d>31)    //si después de sumar el día es mayor a 31
    {
       d=1;     //el día es 1
       m++;     //y el mes es el siguiente
       if(m>12) //si después de incrementar el mes es mayor a 12
       {
          m=1;  //el mes es enero
          a++;  //del año siguiente
       }
    }
    else if(d==29 && m == 2) //si es febrero y después de incrementar el día es 29
         {
            d=1;             //es el día 1
            m++;             //del mes siguiente
         }
    else if(d==31 && (m==4 || m==6 || m==9 || m==11))//si el día es 31 y es un mes de 30 días                
         {
            d=1;             //es el día 1
            m++;             //del mes siguiente
         }	
	
    //se muestra la fecha que será un día después
    cout << setfill('0') << setw(2) << endl << d << "-" << setw(2) << m << "-" << setw(4) << a << endl;	
    system("pause");
}

No hay comentarios:

Publicar un comentario