Esta es una que propongo, si tienen mejoras o una mejor porfa realizar el comentario.
En general el algoritma revisa si el día es correcto y guarda en la variable ultimodiames un 1 si es el último día del mes y un 0 si no lo es.
Pues yo creo que esta solución la alcanzan a copiar en máximo dos páginas de una hoja tipo examen... o no?
#include
using namespace std;
int main() {
int ano,mes,dia,ultimodiames=0;
cout<<"\nIngrese el dia";
cin>>dia;
cout<<"\nIngrese el mes";
cin>>mes;
cout<<"\nIngrese el ano";
cin>>ano;
if(ano<=0 || mes>12 || mes<=0 || dia<=0 || dia>31){
cout<<"\nFecha incorrecta";
return 0;
}
if(ano%4==0)
cout<<"\nEl año es bisiesto";
if(mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12){
cout<<"\nFecha correcta";
if(dia==31)
ultimodiames=1;
}
else if((mes==4 || mes==6 || mes==9 || mes==11)&& dia<=30){
cout<<"\nFecha correcta";
if(dia==30)
ultimodiames=1;
}
else if( mes==2 && dia<=29 && ano%4==0){
cout<<"\nFecha correcta";
if(dia==29)
ultimodiames=1;
}
else if( mes==2 && dia<=28){
cout<<"\nFecha correcta";
if(dia==28)
ultimodiames=1;
}
else
cout<<"\nFecha incorrecta";
if(mes==12 && dia==31){
ano=ano+1;
mes=1;
dia=1;
}
else if(ultimodiames==1){
mes=mes+1;
dia=1;
}
else
dia=dia+1;
cout<<"\nMañana es: "<< ano <<"/"<< mes <<"/"<< dia ;
return 0;
}