elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con matriz mxn
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con matriz mxn  (Leído 2,676 veces)
Neo102

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con matriz mxn
« en: 23 Febrero 2013, 12:14 pm »

Buenas,
Venía en busca de nuevo de vuestros sabios consejos para los que nos iniciamos en este mundillo. En este caso es acerca de un problemilla de multiplicacion de matrices mxn, de cualquier tamaño, en la web hay algo de informacion, la he revisado, pero el caso es que no me acaba de sacar por pantalla el resultado de la multiplicación. Debe ser una chorrada, pero llevo bastante tiempo probando soluciones, y no soy capaz de dar con ella, y estoy empezando a perder la esperanza. He definido las instrucciones , pero a la hora de llamar a la clase, compila todo el programa, pero sin calcular esta operacion (sin mostrar el resultado, lo demás sí que lo hace correctamente).

He creado 3 clases diferentes, que son principal, Matriz y Multiplicacion.java. Es un poco largo, pero ahí van :

import java.io.*;
import java.util.*;

public class Principal {
   
   public static void main(String[] args) throws IOException {
      
   BufferedReader in= Text.open(System.in);
   System.out.print("\r");   
   Matriz A,B;   
   Multiplicacion m;
   int f,c;


   System.out.println("Introduzca la primera Matriz:\n");
   System.out.print(" Número de Filas (matriz A): ");
   f=Text.readInt(in);
   System.out.print(" Número de Columnas (matriz A): ");
   c=Text.readInt(in);
   A=new Matriz(f,c);

   System.out.print("Introducir Elementos: ");// introducimos datos
   System.out.println("Matriz A:("+A.filas+"x"+A.columnas+")");
   for(int i=0;i<A.filas;i++){
   for(int j=0;j<A.columnas;j++){
   System.out.print(" Elemento"+"["+i+"]"+"["+j+"] ?:");
   A.Llenar(Text.readInt(in),i,j);
      }   
   } System.out.println();

   System.out.println("Introduzca la segunda Matriz: ");      
   System.out.print(" Número de Filas (matriz B): ");
   f=Text.readInt(in);
   System.out.print(" Número de Columnas (matriz B): ");
   c=Text.readInt(in);
   B=new Matriz(f,c);


   System.out.println("Matriz B:("+B.filas+"x"+B.columnas+")");
   for(int i=0;i<B.filas;i++){
   for(int j=0;j<B.columnas;j++){
   System.out.print(" Elemento"+"["+i+"]"+"["+j+"] ?:");
   B.Llenar(Text.readInt(in),i,j);
      }
   }
   System.out.println();

   if (A.columnas == B.filas) {
      System.out.println("Matriz A");
   A.Mostrar();//Se muestran las dos matrices creadas, antes
   System.out.println();
   System.out.println("Matriz B");
   B.Mostrar(); // de mostrar el resultado de la multiplicación
   m=new Multiplicacion();
   Matriz resultado = m.producto();
   resultado.mostrar();
   }
   
else {
   System.out.println("<<<error>>>;: No pudo realizarse el producto.");
      }
   }
}

public class Matriz{
   
   public int[][] matriz;
   public int filas,columnas;
   
   public Matriz(){
      filas=1;
      columnas=1;
   }

   public Matriz(int f,int c){
      filas=f;
      columnas=c;
      matriz=new int[filas][columnas];
   }

   public void Llenar(int valor,int i,int j){ // Introduce un valor en la matriz en la posicion i,j
      matriz[j]=valor;
   }

   public int[] getFila(int k){ // Muestra los datos de k(fila)
   int[] row=new int[matriz[k].length];
   for(int i=0;i<row.length;i++){
      row=matriz[k];
   }
   return row;
   }
   
   public int[] getColumna(int k){ // Muestra los datos de k(columna)
   int[] column=new int[matriz.length];
   for(int i=0;i<column.length;i++){
      column=matriz[k];
   }
   return column;
   }
   
   public void Mostrar(){ // Muestra los elementos .

   for(int i=0;i<filas;i++){
      for(int j=0;j<columnas;j++){
         System.out.print(matriz[j]+" ");
      }
   System.out.println();
      }
  }
}


import java.io.*;
import java.util.*;


public class Multiplicacion {
   
public Matriz A,B;

   /**
    * Multiplica dos matrices
    * @param int[][] A
    * @param int[][] B
    * @return int[][] producto
    */
   private int[][] producto(int A[][], int B[][]){
      int suma = 0;
      int result[][] = new int[A.length][B.length];
      for(int i = 0; i < A.length; i++){
         for(int j = 0; j < B.length; j++){
            suma = 0;
            for(int k = 0; k < B.length; k++){
               suma += A[k] * B[k][j];
            }
            result[j] = suma;
         }
      }
      return result;
   }
}





En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda con matriz mxn
« Respuesta #1 en: 24 Febrero 2013, 23:20 pm »

Hola, En realidad no entiendo muy bien lo que deseas hacer, deseas multiplicar las matrices por sus índices? Yo lo entendí así e hice un code muy sencillo:

Código
  1. import java.util.Scanner;
  2.  
  3. public class multiplicarMatriz {
  4.  
  5. private Scanner t = new Scanner(System.in);
  6.    private int matrizUno[][];
  7.    private int matrizDos[][];
  8.  
  9. public void setMatriz()
  10. {
  11. System.out.println("Cuantas filas desea que tengan las matrices?");
  12. int filas = t.nextInt();
  13. System.out.println("Cuantas columnas?");
  14. int columnas = t.nextInt();
  15.  
  16. matrizUno = new int [filas][columnas];
  17. matrizDos = new int [filas][columnas];
  18. }
  19.  
  20. // metodo para llenar una matriz
  21. public void llenarMatriz()
  22. {
  23. for(int i=0; i<matrizUno.length; i++)
  24. {
  25. for(int j=0; j<matrizUno[i].length; j++)
  26. {
  27. System.out.println("Ingrese el elemento "+(j+1)+" de la fila "+i+": ");
  28. System.out.println("Matriz 1: ");
  29. matrizUno[i][j] = t.nextInt();
  30. System.out.println("Matriz 2: ");
  31. matrizDos[i][j] = t.nextInt();
  32. }
  33. }
  34. } // fin metodo
  35.  
  36. // metodo para mostrar los productos de 2 matrices
  37. public void mostrarProducto()
  38. {
  39. for(int i=0; i<matrizUno.length; i++)
  40. {
  41. for(int j=0; j<matrizUno[i].length; j++)
  42. {
  43. System.out.println("Producto de los elementos Nro "+(j+1)+" de las matrices: "+(matrizUno[i][j]*matrizDos[i][j]));
  44. }
  45. }
  46. } // fin metodo
  47.  
  48. } // el fin?

Main:

Código
  1. public class pruebaMatriz {
  2.  
  3. /**
  4. * @param args
  5. */
  6. public static void main(String[] args) {
  7. // TODO Auto-generated method stub
  8.  
  9. multiplicarMatriz prueba = new multiplicarMatriz();
  10. prueba.setMatriz();
  11. prueba.llenarMatriz();
  12. prueba.mostrarProducto();
  13.  
  14.  
  15. }
  16.  
  17. }


Lo que sale por consola:

Código
  1. Cuantas filas desea que tengan las matrices?
  2. 2
  3. Cuantas columnas?
  4. 2
  5. Ingrese el elemento 1 de la fila 0:
  6. Matriz 1:
  7. 2
  8. Matriz 2:
  9. 4
  10. Ingrese el elemento 2 de la fila 0:
  11. Matriz 1:
  12. 3
  13. Matriz 2:
  14. 5
  15. Ingrese el elemento 1 de la fila 1:
  16. Matriz 1:
  17. 1
  18. Matriz 2:
  19. 6
  20. Ingrese el elemento 2 de la fila 1:
  21. Matriz 1:
  22. 9
  23. Matriz 2:
  24. 7
  25. Producto de los elementos Nro 1 de las matrices: 8
  26. Producto de los elementos Nro 2 de las matrices: 15
  27. Producto de los elementos Nro 1 de las matrices: 6
  28. Producto de los elementos Nro 2 de las matrices: 63


No sé si lo que quieres es esto.



Saludos.


En línea

Neo102

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con matriz mxn
« Respuesta #2 en: 25 Febrero 2013, 10:20 am »

Gracias, si, lo que buscaba era algo similar a ese resultado, lo único, añadirle para que muestre en pantalla las matrices, tanto las dos iniciales, como la resultante de la multiplicación.
Al final, lo he solucionado a base intentos y más intentos,  :-*

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con matriz de winsocks
Programación Visual Basic
50l3r 4 2,573 Último mensaje 30 Diciembre 2009, 13:15 pm
por 50l3r
ayuda en una matriz de 5*5 « 1 2 »
Programación C/C++
daxelmejor 11 7,429 Último mensaje 7 Mayo 2010, 21:30 pm
por Littlehorse
Ayuda Python! Matriz.. « 1 2 »
Scripting
cuazzo 10 8,759 Último mensaje 16 Junio 2010, 04:10 am
por leogtz
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
EddyW 2 5,880 Último mensaje 14 Agosto 2010, 06:18 am
por EddyW
Matriz Dentro de otra matriz
Programación Visual Basic
moba741120 3 6,785 Último mensaje 13 Abril 2011, 18:29 pm
por raul338
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines