Bueno antes que nada, pido porfavor que el que me ayude no exponga el código suyo correctamente, tal vez mi código este perfectamente, pero a lo mejor no entendi lo que pide y ese era el fallo...
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 originalpublic static void main
(String[] args
) {
Scanner cin
= new Scanner
(System.
in); System.
out.
println("Cual es la base: "); 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