Foros del Web » Programación para mayores de 30 ;) » Java »

que error tengo en este método ?

Estas en el tema de que error tengo en este método ? en el foro de Java en Foros del Web. Hola necesito ayuda con un programa, que es una calculadora que hace todo a traves de arreglos, es decir, la suma la resta la multiplicación.... ...
  #1 (permalink)  
Antiguo 13/06/2012, 19:19
 
Fecha de Ingreso: marzo-2012
Mensajes: 75
Antigüedad: 12 años, 1 mes
Puntos: 3
Pregunta que error tengo en este método ?

Hola necesito ayuda con un programa, que es una calculadora que hace todo a traves de arreglos, es decir, la suma la resta la multiplicación.... se hace a punta de arreglos, como nos enseñaron en la escuela a pedal!

y pués tengo el método y más o menos tengo la idea pero no me funciona, el arreglo que me da de resultado siempre es 0
porfavor ayudenme ya me estoy comenzando a frustrar....


miren este es el método

Código:
public long[] multiplicarArrays(long[] arreglo1, long[] arreglo2){
          
          
          
          
          //Creamos el arreglo que tendrá el resultado
          //con el tamaño del arreglo 1 que se supone que tiene los mismos elementos que el arreglo2
          long arrayRes[] = new long[(arreglo1.length*arreglo1.length)];
        
          int cont=0;
          
          for (int i=0;i<arreglo1.length;i++ )
          {
              int Por10=1;
               
              for(int j=0;j<arreglo2.length;j++)
              {
                 
                  Por10=1*Por10;
                  
                  arrayRes[cont]=arreglo1[i]* arreglo1[j] * Por10;
                  
                  System.out.println(String.valueOf(arreglo1[i])+"*"+String.valueOf(arreglo2[j])+"*"+String.valueOf(Por10)+"="+String.valueOf(arrayRes[cont]));
                  
                  Por10*=10;
                  
                  cont ++;
              }
              
              //Incrementamos variables
              
              Por10*=10;
          }
            
          return arrayRes;
      }
pues aquí lo tienen, no sé que tengo mal ni porqué rayos me da cero siempre que lo ejecuto....

si no lo entienden bien esta fue la lógica que utilicé

si vamos amultiplicar 83*52 = ( ( 2*3 ) + (2 * 8 * 10) ) + ( (5 * 3 * 10 )+ (5 * 8 * 100 ) ) = 6 + 160 + 150 + 4000 = 4316

o por ejemplo 521*32= (2*1) + (2*2*10) + (2*5*100) + (3*1*10) + (3*2*100) + (3*5*1000) = 16672


ahora yo tengo un Syso dentro del ciclo que me imprime el resultado por posicion del arreglo, y siempre dá cero no se que error tengo en el método ayuda porfavor

si yo estoy mal como lo arían ustedes ?

Última edición por gobodeath; 13/06/2012 a las 19:24
  #2 (permalink)  
Antiguo 14/06/2012, 04:25
 
Fecha de Ingreso: abril-2006
Mensajes: 27
Antigüedad: 18 años
Puntos: 6
Respuesta: que error tengo en este método ?

El array de respuesta esta mal dimensionado.
9 x 9 = 81 ==> 1 x 1 = 1 ==> te quedas corto
99 x 99 = 9801 ==> 2 x 2 = 4 ==> OK
999 x 999 = 9998001 ==> 3 x 3 = 9 ==> te excedes de largo
9999 x 9999 = 9999800001 ==> 4 x 4 = 16 ==> te excedes mucho de largo
... y cada vez mas...

La instruccion "Por10=1*Por10;" es absurda e inutil. Suprimela.

La instruccion "arrayRes[cont]=arreglo1[i]* arreglo1[j] * Por10;" es erronea, empleas dos veces arreglo1 y ninguna arreglo2

El recorrido/iteracion sobre los array lo estas haciendo en el sentido equivocado (o las potencias de 10 deberian hacerse al reves)

La declaracion e inicializacion de la potencia de 10 es erronea.

No estas haciendo la totalizacion (suma) de los factores de la multiplicacion

Si arreglo1 y arreglo2 no contienen 0s, la instruccion "System.out.println" no te puede estar mostrando 0s en ningun caso.
  #3 (permalink)  
Antiguo 14/06/2012, 11:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 75
Antigüedad: 12 años, 1 mes
Puntos: 3
De acuerdo Respuesta: que error tengo en este método ?

Sos monstruo tío GRAAAAAAAAAAAAAAACCCCCCCCCCCIIIIIAAAAAAAAAASSSSSSS SS






YA ME DIOOOOOOOOOOO GRACIAS DE NUEVOOOOOO

Etiquetas: arrays, arreglos, metodo, multiplicar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:11.