Sumar matrices en Java

Suma de matrices en Java

Programa Java para sumar dos matrices de número enteros. 

A partir de dos matrices A y B el programa obtendrá una matriz C que contendrá la suma de las dos matrices. 

Las matrices A y B que vamos a sumar se crean dentro del programa. El número de filas y columnas de A y B se introduce por teclado, así como los valores que contienen.

La suma de dos matrices se realiza de la siguiente forma:

La matriz suma de dos matrices A y B se obtiene sumando los elementos de A y B que se encuentran en la misma posición. Por ejemplo, si las matrices A y B son estas:

      
Matriz A    2   1   3          Matriz B     1   5   2
            4   0   8                       3   1   7

La matriz C, suma de A + B será esta:

Matriz C     3   6   5
             7   1  15 

Solución

Vamos a escribir dos versiones del programa para realizar la suma de matrices:

  • Sin utilizar métodos
  • Utilizando métodos

Suma de matrices en Java sin utilizar métodos

En esta primera versión del programam para sumar matrices escribiremos todo el código dentro del método main

import java.util.Scanner;

public class SumarDosMatrices {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int filas, columnas;

        //lectura del número de filas y columnas de las matrices
        do {
            System.out.print("Número de filas: ");
            filas = sc.nextInt();
        } while (filas < 1);
        do {
            System.out.print("Número de columnas: ");
            columnas = sc.nextInt();
        } while (columnas < 1);

        //crear las matrices A, B y C
        int[][] A = new int[filas][columnas];
        int[][] B = new int[filas][columnas];
        int[][] C = new int[filas][columnas];

        //Introducir los datos en las matrices A y B
        System.out.println("matriz A:");
        for (int i = 0; i < A.length; i++) {
            for (int j = 0; j < A[i].length; j++) {
                System.out.print("Elemento[" + i + "][" + j + "] = ");                                            
                A[i][j] = sc.nextInt();
            }
        }

        System.out.println("matriz B:");
        for (int i = 0; i < B.length; i++) {
            for (int j = 0; j < B[i].length; j++) {
                System.out.print("Elemento[" + i + "][" + j + "] = ");
                B[i][j] = sc.nextInt();
            }
        }

        //obtener la matriz C como suma de las matrices A y B
        for (int i = 0; i < A.length; i++) {
            for (int j = 0; j < A[i].length; j++) {
                C[i][j] = A[i][j] + B[i][j];
            }
        }

        //mostrar por pantalla las matrices A y B
        System.out.println("matriz A:");
        for (int i = 0; i < A.length; i++) {
            for (int j = 0; j < A[i].length; j++) {
                System.out.printf("%3d", A[i][j]);
            }
            System.out.println();
        }
        System.out.println("\nmatriz B:");
        for (int i = 0; i < B.length; i++) {
            for (int j = 0; j < B[i].length; j++) {
                System.out.printf("%3d", B[i][j]);
            }
            System.out.println();
        }

        //mostrar la matriz suma de A + B
        System.out.println("\nmatriz Suma:");
        for (int i = 0; i < C.length; i++) {
            for (int j = 0; j < C[i].length; j++) {
                System.out.printf("%3d", C[i][j]);
            }
            System.out.println();
        }
    }
}

Suma de matrices en Java utilizando métodos

En esta segunda versión del programa para sumar matrices realizaremos el programa utilizando los siguientes métodos:

  • Un método para leer un número entero. Este método lee un número entero por teclado y lo devuelve.
  • Un método para crear una matriz. El método recibe el número de filas y columnas y crea y devuelve una matriz de ese tamaño.
  • Un método para llenar una matriz con números enteros. El método recibe la matriz y asigna a cada elemento un valor entero que se introduce por teclado.
  • Un método para mostrar una matriz por pantalla. El método recibe la matriz a mostrar.
  • Un método que realiza la suma de dos matrices. El método recibe las dos matrices a sumar y devuelve una matriz con el resultado de la suma de ambas matrices.
import java.util.Scanner;

public class SumarMatricesJava {

    public static void main(String[] args) {
        int filas, columnas;

        //lectura del número de filas y columnas
        do {
            System.out.print("Número de filas: ");
            filas = leerEntero();
        } while (filas < 1);
        do {
            System.out.print("Número de columnas: ");
            columnas = leerEntero();
        } while (columnas < 1);

        //crear las matrices A y B
        int[][] A = crearMatriz(filas, columnas);
        int[][] B = crearMatriz(filas, columnas);

        //Introducir datos en matrices
        System.out.println("matriz A:");
        llenarMatriz(A);
        System.out.println("matriz B:");
        llenarMatriz(B);

        //crear matriz C como suma de A + B
        int[][] C = sumarMatrices(A, B);

        //mostrar resultados
        System.out.println("matriz A:");
        mostrarMatriz(A);
        System.out.println("\nmatriz B:");
        mostrarMatriz(B);
        System.out.println("\nmatriz Suma:");
        mostrarMatriz(C);
    }

    //método para crear una matriz
    public static int[][] crearMatriz(int f, int c) {
        int[][] M = new int[f][c];
        return M;
    }

    //nmétodo para leer un número entero por teclado
    public static int leerEntero() {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        return n;
    }

    //método para llenar una matriz con números enteros introducidos por teclado                                  
    public static void llenarMatriz(int[][] M) {
        for (int i = 0; i < M.length; i++) {
            for (int j = 0; j < M[i].length; j++) {
                System.out.print("Elemento[" + i + "][" + j + "] = ");
                M[i][j] = leerEntero();
            }
        }
    }

    //método para mostrar una matriz por pantalla
    public static void mostrarMatriz(int[][] M) {
        for (int i = 0; i < M.length; i++) {
            for (int j = 0; j < M[i].length; j++) {
                System.out.printf("%3d", M[i][j]);
            }
            System.out.println();
        }
    }

    //método para sumar dos matrices
    public static int[][] sumarMatrices(int[][] a, int[][] b) {
        int[][] c = crearMatriz(a.length, a[0].length);
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                c[i][j] = a[i][j] + b[i][j];
            }
        }
        return c;
    }
}

No hay comentarios:

Publicar un comentario