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

Como hacer una multiplicación a través de arreglos?

Estas en el tema de Como hacer una multiplicación a través de arreglos? en el foro de Java en Foros del Web. Hola estoy tratando de hacer una multiplicación con arreglos, es decir como si la estuviese haciendo a papel si entienden ? miren este es el ...
  #1 (permalink)  
Antiguo 10/06/2012, 21:20
 
Fecha de Ingreso: marzo-2012
Mensajes: 75
Antigüedad: 12 años, 1 mes
Puntos: 3
Pregunta Como hacer una multiplicación a través de arreglos?

Hola estoy tratando de hacer una multiplicación con arreglos, es decir como si la estuviese haciendo a papel si entienden ?

miren este es el método que tengo, pero por algún motivo me sale un error, no se si mi lógica esta mal o es algún pequeño error que no he visto.


este método recive dos arreglos, que son los que vamos a multiplicar, y me retorna otro arreglo con los dígitos del resultado de multiplicar los números dentro de los dos arreglos que recivimos como parámetro

Código Javascript:
Ver original
  1. public long[] multiplicarArrays(long[] arreglo1, long[] arreglo2){
  2.  
  3.           long Det=0; long multiplicado;
  4.           long arrayRes[] = new long[20];
  5.           int ayudante=1;
  6.           for(int i=arrayRes.length-1; i>0; i--){
  7.               int k=arrayRes.length-ayudante;
  8.               for(int j=arrayRes.length-1; j>0 || k>=0; j--){
  9.                   multiplicado= arreglo1[j]*arreglo2[i];
  10.                  
  11.                   if(multiplicado>9){
  12.                       multiplicado%=10;
  13.                       for(; multiplicado>0; multiplicado/=10){
  14.                             Det=multiplicado%10;
  15.                             i--;
  16.                             }  
  17.                      arrayRes[k-1]=Det;
  18.                   }
  19.                   arrayRes[k]+=multiplicado;
  20.                   if(arrayRes[k]>9 && k!=0){
  21.                       arrayRes[k]%=10;
  22.                         arrayRes[k-1]=1;
  23.                        
  24.                     }
  25.                   k--;
  26.               }
  27.             ayudante++;  
  28.           }
  29.           return arrayRes;
  30.       }

y lo ejecuto pero me sale este error

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1




Ayudenme porfavor que estoy haciendo mal?

o como lo arían ustedes?

el error según el netbeans está en la linea 19 del método, y no comprendo porque sale eso, ayuda!!!! =(
  #2 (permalink)  
Antiguo 11/06/2012, 04:02
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: Como hacer una multiplicación a través de arreglos?

el error que estás teniendo es porque K está apuntando fuera de los límited del Array (es decir, en algún momento este está teniendo un valor"k < 0" o " k > k.arrayRes" (en tu caso seguro es -1)

Tenés un despelote de variables innecesarias, la multiplicación de arrays unidimencionales es tan sencilla como la famosa "burbuja", dentro del 2do bucle (for), agregás la lógica que necesites y listo.
Código Java:
Ver original
  1. for(int i=0; i<=a.length; i++){
  2.     for(int j=0; j<=b.length; j++){
  3.         System.out.println(a[i]*b[j]);
  4.     }
  5. }

y hay miles de ejemplos y páginas en internet donde podés orientarte
__________________
BadProgrammerException!
  #3 (permalink)  
Antiguo 11/06/2012, 11:09
 
Fecha de Ingreso: marzo-2012
Mensajes: 75
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Como hacer una multiplicación a través de arreglos?

muchas gracias ya lo hize y es totalmente diferente a como lo puse en este foro que pena la ignorancia pero muchas gracais

Última edición por gobodeath; 16/06/2012 a las 14:45

Etiquetas: arreglos, desbordamiento, esception, multiplicar, producto
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 18:47.