Congruencia de Zeller (calendario gregoriano)

Javier Belío Miranda

// La congruencia de Zeller es un algoritmo que sirve
// para calcular el día de la semana de cualquier fecha.
// Sirve para fechas del calendario gregoriano
// (Desde 15/10/1582 en España)

#include <iostream>
using namespace std;

int main()
{
  int d,m,a,x,y,r;

  do
  {
    cout << "Introduce una fecha valida" << endl;
    cout << "Introduce el dia:  "; cin >> d;
    cout << "Introduce el mes:  "; cin >> m;
    cout << "Introduce el agno: "; cin >> a;
  }while (a<1600 || m>12 || d>31);

  if(m<=2)
  {
    m=m+12;
    a--;
  }

  x=a%100;
  y=a/100;
 
   r=d + 13*(m+1)/5 + x + x/4 + y/4 + 5*y;  
  // r=d + 13*(m+1)/5 + x + x/4 + y/4 - 2*y; // (otra posibilidad)


  r=r%7;

  switch(r)
  {
    case 0: cout << "Ese dia cae en sabado" << endl; break;
    case 1: cout << "Ese dia cae en domingo" << endl; break;
    case 2: cout << "Ese dia cae en lunes" << endl; break;
    case 3: cout << "Ese dia cae en martes" << endl; break;
    case 4: cout << "Ese dia cae en miercoles" << endl; break;
    case 5: cout << "Ese dia cae en jueves" << endl; break;
    case 6: cout << "Ese dia cae en viernes" << endl; break;
   }
  return 0;
}
Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s