Expongo el problema:
Se le da la siguiente información, pero puede que prefiera hacer una investigación por sí mismo.
01 de enero 1900 fue un lunes.
Treinta días tiene septiembre,
abril, junio y noviembre.
Todo el resto tiene treinta y uno,
solo ahorro de febrero,
que tiene veintiocho años, llueva o haga sol.
Y en años bisiestos, veintinueve.
Un año bisiesto se produce en cualquier año divisible por 4, pero no en un siglo a menos que sea divisible por 400.
¿Cuántos domingos cayó en el primer día del mes durante el siglo XX (1 enero 1901 a 31 diciembre 2000)?
Mi programa dice que tiene en total desde el 1 de enero de 1901 hasta el 31 de diciembre 2000, hay en total: 5224 Domingos exactamente, ademas para ver si es cierto calcule desde 1901 hasta 1904, lo hice hasta 1904 por que el 1904 es bisiesto y yo lo calcule a mano y efectivamente, dio: 209 (Es decir que los años bisiestos tambien lo reconoce facilmente.)
Se lo puse al profesor la solución y me dijo que no, que es erronea :-\
Miren el código porfavor y deduzcan:
Código Java:
Ver original
int Base = cin.nextInt(); int[] Meses = {31,0,31,30,31,30,31,31,30,31,30,31}; int año = 1901; int e = 0; int Domingos = 0; int SumaMeses = 0; int SumarDias = 0; for(int i = 1;i <= 7;i++){ if(año > 2000){ return; } if(i == 1){ if(año % 4 == 0 && año % 100 != 0){ Meses[1] = 29; } if(año % 4 == 0 && año % 100 == 0){ Meses[1] = 28; } if(año % 4 != 0 && año % 400 != 0 ){ Meses[1]= 28; } } if(i == 7 && SumarDias < SumaMeses){ Domingos = Domingos + 1; SumarDias = SumarDias + i; i = 1; } if(i == 1 && SumarDias == 0) { for(int x = 0; x <= Meses.length-1;x++){ SumaMeses = Meses[x] + SumaMeses; } } if(SumarDias > SumaMeses && SumaMeses < 366){ Domingos = Domingos - 1; } if(SumarDias > SumaMeses ){ año = año + 1; i = 0; SumarDias = 0; SumaMeses = 0; } } } }
Saludos y muchisimas gracias por perder tu tiempo en mi, estoy realmente agredecido con esta web