Buenas! llevo un buen tiempo pensando en porqué no consigo saber cuál es el problema de mi programa, asi que me he decidido a preguntar por aquí.
El programa (programado en C) tiene que ser capaz de imprimirte en pantalla el día de la semana, según la fecha introducida. Lo he planteado de forma que sume todos los días (contando bisiestos) que hay desde el 15 de octubre de 1582 Viernes(dia de inicio del Calendario Gregoriano) hasta la fecha indicada y mediante el uso de divisiones modulares sacar si es bisiesto o no (año%4==0 es bisiesto) (dias_totales%7==0 viernes.. etc).
Con algunas fechas me funciona, y con otras no y nosé a qué se debe, creo tener todo bien planteado... me podríais echar una mano? os dejo el código aquí mismo:
Se me acaba de ocurrir que igual se debía a que las variables tipo numero int almacenan hasta 2^32 (en el caso de mi compilador, devcpp) numeros posibles... pero me extraña que sea por eso... xD.
Espero que sea fácil de solucionar el problema... porque yo no le encuentro nada mal (oh sí que nunca tengo fallos... xDD). Gracias de antemano ;)
El programa (programado en C) tiene que ser capaz de imprimirte en pantalla el día de la semana, según la fecha introducida. Lo he planteado de forma que sume todos los días (contando bisiestos) que hay desde el 15 de octubre de 1582 Viernes(dia de inicio del Calendario Gregoriano) hasta la fecha indicada y mediante el uso de divisiones modulares sacar si es bisiesto o no (año%4==0 es bisiesto) (dias_totales%7==0 viernes.. etc).
Con algunas fechas me funciona, y con otras no y nosé a qué se debe, creo tener todo bien planteado... me podríais echar una mano? os dejo el código aquí mismo:
Citar
#include//printf
#include//system
main(){
//VARIABLES
//variables introducidas por el usuario
int dia,mes,anno;
//variable que almacena dias de los meses
int meses[12]={31,28,31,30,31,30,31,31,30,31,30,31};
//variable que almacena los dias de la semana
char dia_semana[7][10]={"Viernes","Sabado","Domingo","Lunes","Martes","Miercoles","Jueves"};
//variable para obtener mes introducido respecto a la tabla meses
int mes_tabla;
//variables auxiliares
int i,j,dias=0;
//variable que contiene el nº de dias previos al 15 octubre del año 1528
int dias_previos=288; //31+28+31+30+31+30+31+31+30+15
//bienvenida del programa
printf("Bienvenido al programa que le permitira conocer el dia de la semana\nintroduciendo la fecha deseada segun el Calendario Gregoriano.\n\n");
//***printf("Introduzca la fecha en formato dd,mm,aaaa: ");***
//recogemos fecha introducida y la almacenamos
printf("Introduzca el dia: ");
scanf("%i",&dia);
printf("Introduzca el mes: ");
scanf("%i",&mes);
printf("Introduzca el anno: ");
scanf("%i",&anno);
//correcion del mes introducido respecto a la tabla
mes_tabla=mes-1;
//comprobacion del anno bisiesto
if(anno%4==0){
meses[1]=29;
}
//calculo de dias desde el inicio del calendario (15/10/1582) hasta el dia 1 del mes introducido
for(i=0;idias=dias+meses;
}
dias=dias-288;//restamos dias_previos que no entran en el calendario gregoriano
dias=dias+dia;//sumamos dias desde el dia 1 del mes introducido hasta el dia introducido
//mediante division modular sabremos el dia de la semana, partiendo de que viernes=0
dias=dias%7;
//comprobacion de dia e impresion por pantalla del dia
printf("\nEl dia de la semana es: ");
for(i=0;i<7;i++){
if(i==dias){
for(j=0;j<10;j++){
printf("%c",dia_semana[dias][j]);
}
break;
}
}
//fin de programa
printf("\n\n");
system ("pause");
}
Se me acaba de ocurrir que igual se debía a que las variables tipo numero int almacenan hasta 2^32 (en el caso de mi compilador, devcpp) numeros posibles... pero me extraña que sea por eso... xD.
Espero que sea fácil de solucionar el problema... porque yo no le encuentro nada mal (oh sí que nunca tengo fallos... xDD). Gracias de antemano ;)