Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2015, 10:15
sixtoex
 
Fecha de Ingreso: noviembre-2014
Mensajes: 34
Antigüedad: 9 años, 5 meses
Puntos: 1
[Ayuda]Contar los domingos de X años

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 original
  1. public static void main(String[] args) {
  2.  
  3.          Scanner cin = new Scanner(System.in);
  4.          System.out.println("Cual es la base: ");
  5.         int Base = cin.nextInt();
  6. int[] Meses = {31,0,31,30,31,30,31,31,30,31,30,31};
  7. int año = 1901;
  8. int e = 0;
  9. int Domingos = 0;
  10. int SumaMeses = 0;
  11. int SumarDias = 0;
  12.  
  13.  
  14.  
  15.        
  16.        
  17.         for(int i = 1;i <= 7;i++){
  18.                
  19.                 if(año > 2000){
  20.                         System.out.println(Domingos);
  21.                         return;
  22.                 }
  23.                
  24.                
  25.                 if(i == 1){
  26.                        
  27.                         if(año % 4 == 0 && año % 100 != 0){
  28.                                 Meses[1] = 29;
  29.                                
  30.                         }
  31.                         if(año % 4 == 0 && año % 100 == 0){
  32.                                 Meses[1] = 28;
  33.                         }
  34.                         if(año % 4 != 0 && año % 400 != 0 ){
  35.                                 Meses[1]= 28;
  36.                         }
  37.                        
  38.                 }
  39.                
  40.                
  41.         if(i == 7 && SumarDias < SumaMeses){
  42.                 Domingos = Domingos + 1;
  43.                 SumarDias = SumarDias + i;
  44.                 i = 1;
  45.         }
  46.         if(i == 1 && SumarDias == 0)
  47.         {
  48.                 for(int x = 0; x <= Meses.length-1;x++){
  49.                        
  50.                         SumaMeses = Meses[x] + SumaMeses;
  51.                        
  52.                 }
  53.         }
  54.         if(SumarDias > SumaMeses && SumaMeses < 366){
  55.                 Domingos = Domingos - 1;
  56.         }
  57.        
  58.         if(SumarDias > SumaMeses ){
  59.           año = año +  1;
  60.           i = 0;
  61.           SumarDias = 0;
  62.           SumaMeses = 0;
  63.         }
  64.    
  65.    
  66.  
  67.         }      
  68. }
  69. }

Saludos y muchisimas gracias por perder tu tiempo en mi, estoy realmente agredecido con esta web