lectura de

Con este programa uno ingresa el año, mes y día, y te entrega el día que fue (lunes, martes, etc…)

Link: http://es.wikipedia.org/wiki/Algoritmo_para_calcular_el_d%C3%ADa_de_la_semana

#include <stdio.h>

/* Definimos el tipo de datos booleano */
#define TRUE 1
#define FALSE 0
typedef int bool;

int get_month(int, int);
bool bisiesto(int);

int main(int argc, char *argv[]) {
    int year,day,month,dia;
    char *semana[7] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};

    do {
        printf("Year: ");  scanf("%d", &year);
        printf("Month: "); scanf("%d", &month);
        printf("Day: ");   scanf("%d", &day);
    } while(year < 1);

    /* ecuacion principal del algoritmo */
    dia = ((year-1)%7+((year-1)/4-3*((year-1)/100+1)/4)%7+get_month(month, year)+day%7)%7;

    printf("%s\n", semana[dia]);

    return 0;
}

int get_month(int month, int year) {
    int bis[12] = {0, 3, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6};
    int no_bis[12] = {0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5};

    return bisiesto(year) ? bis[month - 1] : no_bis[month - 1];
}

bool bisiesto(int year) {
    /* recibe un año, y retorna true si dicho año es bisiesto.
    * false en caso contrario
    */
    return year%4==0 && (year%400==0 || year%100!=0);
}
Blog Logo

Juan Pablo Escalona G.


Publicado el

comments powered by Disqus
Image

JPEG {codes}

Códigos azarosos en múltiples lenguajes, JavaScript, Ruby, C, Python. Bienvenidos aquellos que quieran aprender.

Volver al inicio