/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

problema en un while

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
chechi123



Registrado: 29 Ago 2007
Mensajes: 15

MensajePublicado: 01/10/2007 8:32 am
Título: problema en un while

hola tengo este codigo, la idea es sumarele dias a una fecha, entonces lo que hago es hallar los dias trascurridos desde el año 1 mes 1 dia 1 hasta la fecha que uno quiere que esta como ano, mes y dia. lo primero que hago es hallar la cantidad de bisisestos que hay desde la fecha 1/1/1 hasta la otra fecha luego los dias transcurridos desde comienzo de año de la fecha luego sumo eso mas los dias transcurridos desde el 1/1/1 has el 31 de dic del ano anterior ala fecha que uno ingresa osea 365*(ano-1), + el numero de dias que se le van a sumar en el codigo no lo sumo porque estaba haciendo una prueba para ver que sin sumarle n dias mas deberia darme la fecha actual

ya saque el ano el problema es el mes porque calculo los meses que han transcurrido desde la fecha 1/1/1 hasta la acutual que es mestemp y uso un while para saber en que mes se esta lo que se supone que debe hacer es hasta mestemp aumentar temp y mesnuevo si mesnuevo llega a 12 debe volver a empezar pero temp si continua hasta mestemp

el problema es que si ingreso la fecha año 1 mes 2 dia 1 me dice que es el mes 2 osea esta bien pero si ingreso año 1 mes 12 dia 31 me dice que es el mes 0 y no se proque lo he hecho en papel varias veces pero no encuentro el error. para hallar el dia tiodavia no tengo nada por eso le deje simplemente que le asigne 1.. ojala puedan ayudarme gracias..

este es el codigo, antes hay un procediemiento que pide la fecha como ano mes y dia

int sumar (int numdias)
{ int bisiestos = 0;
int dias, mesnuevo=0,anonuevo,dianuevo,mestemp;


for (int i=1 ; i<ano;i++)
{ if (esBisiesto(i))
bisiestos += 1;
}

dias = diasTranscurridos();
dias = dias + (ano-1)*365 + bisiestos ;

anonuevo = ((dias - bisiestos)/365) + 1;
mestemp = ((dias*12)/365) + 1;
int temp = 0;
while (temp < mestemp)
{ mesnuevo++;
temp++;
if (mesnuevo>12)
{ mesnuevo =0;
}

}


dia = 1;

return mesnuevo;
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 379
Ubicación: Cono Sur

MensajePublicado: 01/10/2007 1:50 pm
Título:

Hola

Te indico algunos errores importantes en tu códgo:

1- Debes cerrar la función al final del return con '}'

2- int temp la debes declarar arriba , donde están declaradas las otras variables de tu función.

Cuando edites un código no olvides de colocarlo dentro de las etiquetas [ code]tu_código[ /code] para que pueda entenderse mejor.

Un saludo
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 379
Ubicación: Cono Sur

MensajePublicado: 01/10/2007 2:14 pm
Título:

Más errores...

3- La variable ano no está declarada.
4- Es dia o dias??

Por otra parte, tu código (C o C++?) es un poco difícil de seguir porque no se sabe si implementase bien la función esBisiesto -entre otros-. Sería más sencillo analizarlo si hubieras colocado los otros módulos para un buen seguimiento del mismo y así saber a ciencia cierta dónde está el error.

Un saludo
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com