martes, 27 de noviembre de 2012

[JAVA] Matriz de 2 dimensiones, suma de filas y columnas

Hoy os traigo algo de lo poco que hago en clase, una matriz aleatoria de 2 dimensiones, sumando sus filas, columnas y diagonales. Para muchos esto os resultará fácil o una tontería, algo normal si ya tenéis cierto nivel en programación, pero hay mucha gente (cómo yo en mis tiempos mozos primeros días) que le puede costar más darse cuenta de esto, así que mi intención en este post es ayudar a esa gente a la que le cuesta más, aquí pongo mi código:


1:  public void SumaMatriz(){  
2:      //Incicialización del Random, matriz y demás variables  
3:      Random r=new Random();  
4:      Scanner sc=new Scanner(System.in);  
5:      System.out.print("Alto de la matriz: ");  
6:      int f=sc.nextInt();  
7:      System.out.print("Ancho de la matriz: ");  
8:      int c=sc.nextInt();  
9:      int mat[][]=new int[f][c];  
10:      int sumf;  
11:      int sumc;  
12:      int sumd=0;  
13:      int sumdi=0;  
14:      //Rellenar Matriz  
15:      for (int i = 0; i < mat.length; i++) {  
16:        for (int j = 0; j < mat[0].length; j++) {  
17:          mat[i][j]=r.nextInt(5)+1;  
18:        }  
19:      }  
20:      //Mostrar Matriz  
21:      for (int i = 0; i < mat.length; i++) {  
22:        for (int j = 0; j < mat[0].length; j++) {  
23:          System.out.print(mat[i][j]+"\t");  
24:        }  
25:        System.out.println("");  
26:      }  
27:      //Suma filas  
28:      for (int i = 0; i < mat.length; i++) {  
29:        sumf=0;  
30:        for (int j = 0; j < mat[i].length; j++) {  
31:          sumf=sumf+mat[i][j];  
32:        }  
33:        System.out.println("La suma de los valores de la fila "+(i+1)+" es:      "+sumf);  
34:      }  
35:      System.out.println("");  
36:      //Suma columnas  
37:      for (int i = 0; i < mat[0].length; i++) {  
38:        sumc=0;  
39:        for (int j = 0; j < mat.length; j++) {  
40:          sumc=sumc+mat[j][i];  
41:        }  
42:        System.out.println("La suma de los valores de la columna "+(i+1)+" es: "+sumc);  
43:      }  
44:      System.out.println("");  
45:      //Suma diagonal  
46:      if (f-c==0){  
47:        for (int i = 0; i < mat.length; i++) {     
48:          sumd=sumd+mat[i][i];   
49:        }  
50:        System.out.println("La suma de la diagonal principal es: "+sumd);  
51:      }  
52:      System.out.println("");  
53:      //Suma diagonal inversa  
54:      if (f-c==0){  
55:        for(int i = 0; i < mat.length; i++){  
56:          for(int j = 0; j < mat[i].length; j++){  
57:            if( i+j == mat.length - 1){  
58:             sumdi = sumdi + mat[i][j];  
59:          }  
60:        }  
61:      }  
62:        System.out.println("La suma de la diagonal secundaria es: "+sumdi);  
63:      }  
64:    }  

Esto es un método que se puede llamar desde cualquier parte de tu programa ;).

Espero que os haya ayudado, para cualquier duda (o corrección), no dudéis en comentar. Un saludo!

12 comentarios:

  1. Buscando encontre dos sitios, ambos me sirivieron, el tuyo y otro en el que se mostraba la calculadora de matriz pero con interfaz grafica.. No se como poner el enlace bonito, asi que lo pego http://jagonzalez.org/calculadora-de-matriz-en-java/

    ResponderEliminar
  2. gracias amigo por publicar el programa me despejo mis duda

    ResponderEliminar
  3. Genial viejo men Gracias me ha servido

    ResponderEliminar
  4. Amigo quisiera saber si se puede llenar primero las columnas

    ResponderEliminar
  5. Respuestas
    1. length te devuelve la longitud del elemento, si es un array, devuelve la longitud del array, asi pues, en un array tal que [1,2,3,4], la longitud es de "4", en un array tal que [4326,345], la lengitud es de "2"

      Eliminar
  6. Tienes razón con "los primeros días" así ando yo y tu blog me ha servido mucho. Gracias!!!

    ResponderEliminar
  7. Por que sale error en if (F-c==0) ? :(

    ResponderEliminar
  8. se solcita crear un programa que permita rrellenar una matriz de tamaño de 4x3 co n numeros aleatorios desde el 25 al 75 y almacenar al final un arreglo de tamaño 12 cuyos valores fueron obtenidos de la matriz con una lectura de caracol

    ResponderEliminar
  9. como hacer para que muestre la suma mayor de la columna entre la primera y la ultima columna

    ResponderEliminar