Donde:
d = día de la semana
A = Año
DM = Días transcurridos hasta antes del primer día del mes
D = Día
% = Módulo
En primer lugar debemos tener en cuenta si el año es bisiesto o no. Por lo que para calcular el DM%7 deberemos usar una tabla u otra:
Meses | E | F | M | A | M | J | J | A | S | O | N | D |
Año regular | 0 | 3 | 3 | 6 | 1 | 4 | 6 | 2 | 5 | 0 | 3 | 5 |
Año bisiesto | 0 | 3 | 4 | 0 | 2 | 5 | 0 | 3 | 6 | 1 | 4 | 6 |
Vamos a realizar el programa en C:
{
//Declaracion de vectores y variables
//Declaracion de vectores y variables
int regular[]={0,3,3,6,1,4,6,2,5,0,3,5};
int bisiesto[]={0,3,4,0,2,5,0,3,6,1,4,6};
int d,m,a;
//Para simplificar el algoritmo vamos a dividirlo en partes más pequeñas
int result1,result2,result3,result4,result5;
printf("Introduce un dia de la semana en numero: ");
scanf("%d",&d);
printf("Introduce un mes en numero: ");
scanf("%d",&m);
printf("Introduce un anyo en numero: ");
scanf("%d",&a);
//comprobamos primero si el año es bisiesto o es regular
//si es bisiesto, asignamos a m la posición del vector bisiesto -1
//si es regular, asignamos a m la posición del vector regular -1
if((a%4==0) && !(a%100==0))
if((a%4==0) && !(a%100==0))
{
m=bisiesto[m-1];
}
else if (a%400==0)
{
m=bisiesto[m-1];
}
else
{
m=regular[m-1];
}
//Resolvermos la fórmula poco a poco
result1=(a-1)%7;
result1=(a-1)%7;
result2=(a-1)/4;
result3=(3*(((a-1)/100)+1))/4;
result4=(result2-result3)%7;
result5=d%7;
d=(result1+result4+m+result5)%7;
//resuelto el dia, con un switch case mostramos en pantalla lo que corresponda.
switch(d)
switch(d)
{
case 0:
printf("Domingo\n");
break;
case 1:
printf("Lunes\n");
break;
case 2:
printf("Martes\n");
break;
case 3:
printf("Miercoles\n");
break;
case 0:
printf("Domingo\n");
break;
case 1:
printf("Lunes\n");
break;
case 2:
printf("Martes\n");
break;
case 3:
printf("Miercoles\n");
break;
case 4:
printf("Jueves\n");
printf("Jueves\n");
break;
case 5:
printf("Viernes\n");
break;
case 6:
printf("Sabado\n");
break;
}
system("PAUSE");
}
case 5:
printf("Viernes\n");
break;
case 6:
printf("Sabado\n");
break;
}
system("PAUSE");
}
Me recontra q sirvio gracias :)
ResponderEliminarcomo se hace en dfd
ResponderEliminarEl algoritmo devuelve 0 para el lunes, 1 para el martes... y 6 para el domingo, ojo con eso.
ResponderEliminarZoeDoGaM --> www.bitcoinxt.net
¿Que funciona tienen estos numeros 0,3,3,6,1,4,6,2,5,0,3,5 ?
ResponderEliminarhola!!muchas gracias por la fuente...muy util..funciono a la perfeccion..lo programe en un FPGA y de maravilla...de nuevo muchas gracias por el aporte
ResponderEliminar