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
(Esos 5215 domingos es en los 12 meses de cada año, no solo cuento el primer mes)


