• Domingo 19 de Mayo de 2024, 05:47

Autor Tema:  Obtener dia de la Semana  (Leído 2164 veces)

drofnarts

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Obtener dia de la Semana
« en: Lunes 9 de Noviembre de 2009, 00:15 »
0
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

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Obtener dia de la Semana
« Respuesta #1 en: Lunes 9 de Noviembre de 2009, 21:31 »
0
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 :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================