Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Sumar dias a una Fecha

Estas en el tema de Sumar dias a una Fecha en el foro de C/C++ en Foros del Web. Estimados... como lo hago para sumar una cantidad de días ingresada por e usuario a una fecha también ingresa... tengo todo validado. solo me falta ...
  #1 (permalink)  
Antiguo 10/10/2008, 13:32
Avatar de punk_not_dead  
Fecha de Ingreso: octubre-2008
Ubicación: Zantiasko
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Sumar dias a una Fecha

Estimados... como lo hago para sumar una cantidad de días ingresada por e usuario a una fecha también ingresa... tengo todo validado. solo me falta la suma de los días...
De antemano gracias...

Código PHP:
    int main(){
       
int anymesdiabisagregaamd;//Declaracion de variables
       
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==|| 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==|| mes==2){//Vaida 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 año %d",diamesany);
       
printf("\n\nIngrese la cantidad de días a sumar:");
       
scanf("%d",&agrega);//cantidad de dias a sumar
       
if(mes==|| any==1){//Suma dias en año bisisesto mes febrero COMO LOS SUMO...???
          
for(a=anya<=1000000a++){
             for(
m=2m<13m++){
                for(
d=diad<30d++){ 
  #2 (permalink)  
Antiguo 10/10/2008, 16:47
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Sumar dias a una Fecha

no se como solucionarlo, el codigo esta incompleto, pero tienes un grave error en los if, por que le pones || y deberias poner && ya que no se trata de opciones , sino de que todas las variables deben cumplir para que el if sea positivo

|| : significado de OR ( o sino se cumple, )
&& : " " " AND ( y si tambien se cumple )
  #3 (permalink)  
Antiguo 13/10/2008, 05:29
Avatar de punk_not_dead  
Fecha de Ingreso: octubre-2008
Ubicación: Zantiasko
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Sumar dias a una Fecha

Tienes razón... ya los cambié, no se en que andaba, sigo con la incógnita de como sumar la maldita fecha...
  #4 (permalink)  
Antiguo 13/10/2008, 07:42
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Sumar dias a una Fecha

No era mas facil utilizar mktime y la variable time_t?

a menos que el problema requiera que se haga manualmente.
__________________
Recursos Visual C++
  #5 (permalink)  
Antiguo 13/10/2008, 08:08
Avatar de punk_not_dead  
Fecha de Ingreso: octubre-2008
Ubicación: Zantiasko
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Sumar dias a una Fecha

La idea es que el usuario ingrese la fecha y los dias que quiere sumarle, ejemplo si le suma 30 dias, tiene que saber el programa si es mes con 30 o 31 dias si es febrero bisisesto o no...
Tengo todo listo me falta ese puro detalle
  #6 (permalink)  
Antiguo 06/02/2010, 17:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Sumar dias a una Fecha

Yo se que fue hace mucho pero estaba buscando por ese mismo codigo y no lo encuentre...asi q despues de mas de 2 horas lo hice...gracias al codigo de "punk_not_dead" que estaba muy bien hecho..




Código:
#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;
}

Creo que no hay errores y espero q sea util a alguien....seguramente hay maneras mas sencillas de hacerlo pero es para la facu y no podia usar otros comandos.

No esta comentado pero si alguien no entiende algo avisame ;)
  #7 (permalink)  
Antiguo 07/02/2010, 10:22
 
Fecha de Ingreso: enero-2010
Mensajes: 25
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Sumar dias a una Fecha

En mi blog esta la solución a ese problema

http://www.devshared.net/sumar-dias-a-una-fecha-en-c/

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:18.