Está en la página 1de 9

Var

               Entero:Dia,Mes,Anho
Inicio
               Escribir "Ingrese Fecha en el formato DD/MM/AAAA"
               Escribir "Ingrese Dia"
               Leer Dia
Escribir "Ingrese Mes"
Leer Mes
Escribir "Ingrese Anho"
Leer Anho
Segun Mes Hacer
                               Caso 1,3,5,7,8,10:
                                               Si Dia=31 Entonces
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:1/",Mes+1,"/",Anho
                                              Sino
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:" ,Dia+1,"/",Mes,"/",Anho
                                               FinSi
Caso 4,6,9,11:
                                               Si Dia=30 Entonces
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:1/",Mes+1,"/",Anho
                                               Sino
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:" ,Dia+1,"/",Mes,"/",Anho
                                               Finsi
Caso 2:
                                               Si Anho/4=0 Entonces
                                                              Si Dia=28 Entonces
Escribir "Si la Fecha ingresada es: ",Dia, "/", Mes ,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:1/",Mes+1,"/",Anho
                                                              Sino
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:" ,Dia+1,"/",Mes,"/",Anho
                                                              Finsi
                                               Sino
                                                               Si Dia=29 Entonces
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:1/",Mes+1,"/",Anho
                                                               Sino
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:" ,Dia+1,"/",Mes,"/",Anho
                                                               FinSi
                                               FinSi
Caso 12:
                                               Si Dia=31 Entonces
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:1/",1,"/",Anho+1
                                               Sino
Escribir "Si la Fecha ingresada es:",Dia,"/",Mes,"/",Anho
Escribir "El dia siguiente a la fecha ingresada sera:" ,Dia+1,"/",Mes,"/",Anho
                                               FinSi
FinSegun
Fin

Algoritmo  fecha_despues
Ambito 
                  DIA,MES,AÑO: Entero
     Inicio
                  Leer(DIA,MES,AÑO)
                  SI MES= 1 OR 3 OR 5 OR 7 OR 8 OR 10
                      SI DIA= 1..30
                      [Mostrar (DIA+1'/'MES'/'AÑO)
                      SINO [Mostrar (DIA-30'/'MES+1'/'AÑO)
                  SI MES= 4 OR 6 OR 9 OR 11
                        SI DIA= 1..29
                        [Mostrar (DIA+1'/'MES'/'AÑO)
                        SINO [Mostrar (DIA-29'/'MES+1'/'AÑO)
                 SI MES= 2
                        SI DIA= 1..27
                        [Mostrar (DIA+1'/'MES'/'AÑO)
                     SINO [Mostrar (DIA-27'/'MES+1'/'AÑO)
                 SI MES= 12
                        SI DIA= 1..30
                        [Mostrar (DIA+1'/'MES'/'AÑO)
                        SINO [Mostrar (DIA-30'/'MES-11'/'AÑO+1)

     Fin
#include<stdio.h>
#pragma warning(disable:4996)
int main(){
int any, mes, dia, bis, agrega;//Declaracion de variables
int newMes, newDia, newYear=0, jan, fev, mar, abr, mai, jun, jul, ago, set,
out, nov, dez;
printf("\nIngrese ano:");
scanf("%d",&any);
if((any%4==0)||(any%400==0)&&(any%100!=0)){//Validar si es bisiesto
bis=1;
}else{
bis=0;
}
printf("\nIngrese mes:");
scanf("%d",&mes);
while(mes>12 || mes<1){//Valida que el mes no sea mas que 13
printf("\nIngrese mes correcto:");
scanf("%d",&mes);
}
printf("\nIngrese dia:");
scanf("%d",&dia);
if(bis==1 && mes==2){//valida dias en febrero bisisesto
while(dia>29){
printf("Ingrese dia correcto, febrero bisisesto tiene hasta 29 dias");
scanf("%d",&dia);
}
}
if(bis==0 && mes==2){//Valida dias en febrero no bisiesto
while(dia>28){
printf("Ingrse dia correcto, febrero tiene solo 28 dias");
scanf("%d",&dia);
}
}
printf("\n\nUsted a ingresado el dia %d del mes %d del anio %d",dia, mes, any);
printf("\n\nIngrese la cantidad de días a sumar:");
scanf("%d",&agrega);//cantidad de dias a sumar

newMes = mes;
newYear = any;

while(agrega>0){
if(mes==1){
for(jan=dia+1; jan<32; jan++){
if(agrega>0){
agrega--;
newDia = jan;
}
}
if(agrega>0)
newMes=2;
}
if(newMes==1){
for(jan=1; jan<32; jan++){
if(agrega>0){
agrega--;
newDia = jan;
}
}
if(agrega>0)
newMes=2;
}
if(mes == 2 && bis==1){
for(fev=dia+1; fev<30; fev++){
if(agrega>0){
agrega--;
newDia = fev;
}
}
if(agrega>0)
newMes=3;
}
if(mes == 2 && bis==0){
for(fev=dia+1; fev<29; fev++){
if(agrega>0){
agrega--;
newDia = fev;
}
}
if(agrega>0)
newMes=3;
}
if(newMes == 2 && bis==1){
for(fev=1; fev<30; fev++){
if(agrega>0){
agrega--;
newDia = fev;
}
}
if(agrega>0)
newMes=3;
}
if(newMes == 2 && bis==0){
for(fev=1; fev<29; fev++){
if(agrega>0){
agrega--;
newDia = fev;
}
}
if(agrega>0)
newMes=3;
}
if(mes==3){
for(mar=dia+1; mar<32; mar++){
if(agrega>=0){
agrega--;
newDia = mar;
}
}
if(agrega>=0)
newMes=4;
}
if(newMes==3){
for(mar=1; mar<32; mar++){
if(agrega>=0){
agrega--;
newDia = mar;
}
}
if(agrega>=0)
newMes=4;
}
if(mes==4){
for(abr=dia+1; abr<30; abr++){
if(agrega>=0){
agrega--;
newDia = abr;
}
}
if(agrega>=0)
newMes=5;
}
if(newMes==4){
for(abr=1; abr<30; abr++){
if(agrega>=0){
agrega--;
newDia = abr;
}
}
if(agrega>=0)
newMes=5;
}
if(mes==5){
for(mai=dia+1; mai<32; mai++){
if(agrega>=0){
agrega--;
newDia = mai;
}
}
if(agrega>=0)
newMes=6;
}
if(newMes==5){
for(mai=1; mai<32; mai++){
if(agrega>=0){
agrega--;
newDia = mai;
}
}
if(agrega>=0)
newMes=6;
}
if(mes==6){
for(jun=dia+1; jun<31; jun++){
if(agrega>=0){
agrega--;
newDia = jun;
}
}
if(agrega>=0)
newMes=7;
}
if(newMes==6){
for(jun=1; jun<31; jun++){
if(agrega>=0){
agrega--;
newDia = jun;
}
}
if(agrega>=0)
newMes=7;
}
if(mes==7){
for(jul=dia+1; jul<32; jul++){
if(agrega>=0){
agrega--;
newDia = jul;
}
}
if(agrega>=0)
newMes=8;
}
if(newMes==7){
for(jul=1; jul<32; jul++){
if(agrega>=0){
agrega--;
newDia = jul;
}
}
if(agrega>=0)
newMes=8;
}
if(mes==8){
for(ago=dia+1; ago<32; ago++){
if(agrega>=0){
agrega--;
newDia = ago;
}
}
if(agrega>=0)
newMes=9;
}
if(newMes==8){
for(ago=1; ago<32; ago++){
if(agrega>=0){
agrega--;
newDia = ago;
}
}
if(agrega>=0)
newMes=9;
}
if(mes==9){
for(set=dia+1; set<31; set++){
if(agrega>=0){
agrega--;
newDia = set;
}
}
if(agrega>=0)
newMes=10;
}
if(newMes==9){
for(set=1; set<31; set++){
if(agrega>=0){
agrega--;
newDia = set;
}
}
if(agrega>=0)
newMes=10;
}
if(mes==10){
for(out=dia+1; out<32; out++){
if(agrega>=0){
agrega--;
newDia = out;
}
}
if(agrega>=0)
newMes=11;
}
if(newMes==10){
for(out=1; out<32; out++){
if(agrega>=0){
agrega--;
newDia = out;
}
}
if(agrega>=0)
newMes=11;
}
if(mes==11){
for(nov=dia+1; nov<31; nov++){
if(agrega>=0){
agrega--;
newDia = nov;
}
}
if(agrega>=0)
newMes=12;
}
if(newMes==11){
for(nov=1; nov<30; nov++){
if(agrega>=0){
agrega--;
newDia = nov;
}
}
if(agrega>=0)
newMes=12;
}
if(mes==12){
for(dez=dia+1; dez<32; dez++){
if(agrega>0){
agrega--;
newDia = dez;
}
}
if(agrega>0 && newMes==12){
newMes=1;
newYear= newYear + 1;
if((newYear%4==0)||(newYear%400==0)&&(newYear%100!
=0)){//Validar si es bisiesto
bis=1;
}else{
bis=0;
}
}
}
if(newMes==12){
for(dez=1; dez<32; dez++){
if(agrega>0){
agrega--;
newDia = dez;
}
}
if(agrega>0 && newMes==12){
newMes=1;
newYear= newYear + 1;
if((newYear%4==0)||(newYear%400==0)&&(newYear%100!
=0)){//Validar si es bisiesto
bis=1;
}else{
bis=0;
}
}
}
}

printf("\n\n La nueva fecha es dia %d del mes %d del anio %d\n",newDia, newMes,
newYear);

return 0;
}
primero según mi lógica necesitamos obtener el número de días por mes, para esto voy a crear una función diasPor

Mes(String nombreMes)
public int diasPorMes(String nombreMes){
     int numDias=0;
    if(nombreMes.equals("abril")|| nombreMes("junio")||nombreMes.equals("septiembre")||
nombreMes("noviembre")){
        numDias=30;
    }else if(nombreMes.equals("febrero")){
       
       // para cuando el año es bisiesto
      if ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0))){//si el año es bisiesto es
divisible entre 4 y 100 o 400
           numDias=29;
        }
       
     else{
        numDias=28 ;//queda pendiente para año bisiesto
     }
   }else{//todos los demas meses
       numDias=31;
 
returm numDias;
}

ya tenemos el numero de días por mes, ahora lo que nos interesa es sumar para obtener la nueva fecha. se tiene que

tomar en cuenta que si al número de dias a sumar excede el numero de dias restantes del mes, entonces se debe

incrementar ciclicamente el mes, y lo mismo para el caso que sobrepase el numero de meses por año.
public void sumarDias(int numeroDiasSumar){
   int diaActual, mesActual, añoActual;// se supone que estas variables ya contienen valores,
supongamos que la fecha es:
   diaActual=25;
   mesActual="diciembre";
   añoActual=2013;
   int numDias=diasPorMes("diciembre");// nos regresa 31represnat el numero de dias por mes
   //suponemos que nos mandaron que a la fecha anterior le sumemos 8 dias   por lo que nos deberia
de quedar la fecha 02 de enero del 2014
if((diaActual+numeroDiasSumar)>numDias){
   //25+8=33
   //restamos el numero de dias total (33) menos   los dias que contiene el mes
  numDias=numDias-(diaActual+numeroDiasSumar); //nos queda 33-31=2
  //sumamos 1 al mes   y si excede 12 entonces sumamos uno al año y el mes siguiente es 1
  //para auxiliar lo siguiente creamos una funcion para que nos de el numero del mes segun el
nombre del mes y nos lo regresa en numeroDeMes
numeroDeMes=numeroMes("diciembre");//regresa 12
  if((numeroDeMes+1)>=13){
      mesActual=numeroDeMes-mesActual+1;//en este caso 12 -12=0, pero como no hay mes cero y por
logica le sumamos uno al mes
      añoActual=añoActual+1;//quedaria 2013+1=2014
     
}else if((numeroDeMes+1)<13){
             mesActual=mesActual+1;
          }
System.out.println("al sumar "+numeroDiasSumar+ " dias la fecha queda"+ diaActual+" de "+ mesActual
+"  del "+ añoActual );
//al sumar 8 dias la fecha queda  2 de 1 del 2013
}
 
   
}

También podría gustarte