SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: drofnarts en Lunes 9 de Noviembre de 2009, 00:15

Título: Obtener dia de la Semana
Publicado por: drofnarts en Lunes 9 de Noviembre de 2009, 00:15
Hola, quería resolver la siguiente duda:

Tengo que hacer un programa que me diga el dia de la semana según una fecha introducida desde teclado. Tengo duda para obtener el dia de la semana, yo hago lo siguiente:

resto del programa...

// Compruebo los años entre el intervalo 1582- añoIntroducido
for(i<1582; i<= añoIntroducido; i++)
{
      // Comprobar años normales y bisiestos
      if(i % 4 == 0 && i%100 != 0 || i%400 == 0)
          añoBisiesto = añoBisiesto +1;
      else
          añoNormal = añoNormal +1;
}
// obtener diaSemana en numero
dSemana = (añoBisiesto*366 + añoNormal*365)%7;

¿Es correcto? ¿Qué falla? Lo compruebo pero no me da el dia de la semana correcto que corresponde a la fecha introducida

Espero vuestra ayuda

Gracias
Título: Re: Obtener dia de la Semana
Publicado por: ProfesorX en Lunes 9 de Noviembre de 2009, 21:31
Segun lo que publicaste, te faltaria tomar en cuenta lo siguiente, para obtener el dia de la semana.

1. Agregar el numero de dias transcurridos desde el inicio del año hasta la fecha que hayas introducido. Ejemplo, si la fecha que introduciste es 25 de enero, han pasado 25 dias desde que comenzo el año y debes añadirlos. Si la fecha qe introdujiste es 3 de marzo, entonces han pasado 62 o 63 dias, dependiendo si el año es bisiesto o no.

2. Verifica en que dia de la semana comenzo el calendario gregoriano, porque me parece que no comenzo en domingo, de ser asi, habria una desviacion de dias, que debes añadir para compensar.

3. Quizas te sea mas simple usar otro algoritmo, aqui te dejo un enlace de la wikipedia, solo tendrias que pasarlo a lenguaje C++:
http://es.wikipedia.org/wiki/Algoritmo_para_determinar_el_d%C3%ADa_de_la_semana

Saludos :)