03 abril, 2021

JAVA - Generar, sumar y restar dos matrices

El siguiente ejercicio lo manda Miguel Gómez. Diseñe un programa en java con un menú en el cual la primera opción capture dos matrices, la segunda opción realice la suma de las dos matrices, la tercera opción la resta, y la cuarta la salida del programa. Realice todas las validaciones correspondientes, entre ellas el tamaño de las dimensiones de las matrices.

CÓDIGO

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import java.util.*;

public class Problema11copia2 {

	// Método principal que lanza la aplicación
	public static void main(String[] args) {
		// Se declara dos arreglos bidimensionales del tipo de dato entero
		int matriz1[][] = null;
		int matriz2[][] = null;
		int opcion;

		do {
			System.out.println("+---------------------------------------------+");
			System.out.println("| 1. Generar matrices | 2. Sumar matrices     |");
			System.out.println("| 3. Restar matrices  | 4. Salir del programa |");
			System.out.println("+---------------------------------------------+");
			Scanner sc = new Scanner(System.in);
			opcion = sc.nextInt();

			// GENERAR MATRICES
			if (opcion == 1) {
				// Entrada de datos para la matriz 1
				int fil1 = validarNumero("Ingrese el número de filas para la mtriz 1   : ", sc);
				int col1 = validarNumero("Ingrese el número de columnas para la mtriz 1: ", sc);

				// Entrada de datos para la matriz 2
				int fil2 = validarNumero("Ingrese el número de filas para la mtriz 2   : ", sc);
				int col2 = validarNumero("Ingrese el número de columnas para la mtriz 2: ", sc);

				// LLenamos la matriz 1 de números aleatorios en el intervalo de 10 a 99
				matriz1 = generarMatriz(fil1, col1, 10, 99);

				// LLenamos la matriz 2 de números aleatorios en el intervalo de 10 a 99
				matriz2 = generarMatriz(fil2, col2, 10, 99);

				// Visualizamos el resultado
				System.out.println("\nResultado Matriz 1");
				Listar(fil1, col1, matriz1, "m1");
				
				System.out.println("\nResultado Matriz 2");
				Listar(fil2, col2, matriz2, "m2");
			}

			// SUMAR MATRICES
			if (opcion == 2) {
				if (matriz1 != null && matriz2 != null) {
					operarMatrices(matriz1, matriz2, '+');
				} else
					System.err.println("Debe primero generar las matrices");
			}
			
			// SUMAR MATRICES
			if (opcion == 3) {
				if (matriz1!=null && matriz2 !=null) {
					operarMatrices(matriz1, matriz2, '-');
				} else
					System.err.println("Debe primero generar las matrices");
			}

			System.out.println("");
		} while (opcion != 4);
		System.out.println("Fin del programa");
	}

	// Elaboramos un método que permita ingresar valores númericos positivos
	public static int validarNumero(String msj, Scanner sc) {
		int valor;
		while (true) {
			try {
				sc.nextLine();
				System.out.print(msj);
				valor = sc.nextInt();
				if (valor > 0) {
					break; // Corto el ciclo
				} else 
					throw new Exception("NO se aceptan números negativos: " + valor);
			} catch (InputMismatchException e) {
				System.err.println("SOLO se aceptan valores númericos: " + sc.next());
			} catch (Exception e) {
				System.err.println("" + e.getMessage());
			}
		}
		return valor;
	}
	
	// Elaboramos un método que genere números de dos cifras
	public static int aleatorio(int min, int max) {
		return (int) ((max - min + 1) * Math.random() + min);
	}

	// Elaboramos un método que permita generar la matriz
	public static int[][] generarMatriz(int filas, int columnas, int min, int max) {
		//Declaramos un arreglo bidimensional de tipo entero
		int[][] matriz = new int[filas][columnas];
		for (int i = 0; i < filas; i++) { // Recorremos las filas
			for (int j = 0; j < columnas; j++) { // Recorremos las columnas
				// El índice i lo usaremos para acceder a una fila y el índice j para acceder a una columna
				matriz[i][j] = aleatorio(min, max); // Asignamos un número aleatorio al elemento
			}
		}
		return matriz; // Retornamos la matriz al punto donde se hizo la llamada
	}
	
	// Elaboramos un método que permita imprimir la matriz
	public static void Listar(int filas, int columnas, int[][] matriz, String nombre) {
		for (int i = 0; i < filas; i++) {
			for (int j = 0; j < columnas; j++)
				System.out.print(nombre + " [" + i + "][" + j + "] = " + 
								 String.format("%-5s", matriz[i][j]));
			System.out.println("");
		}
	}
	
	// Elaboramos un método que permita operar 2 matrices
	private static void operarMatrices(int[][] matriz1, int[][] matriz2, char operador) {
		// Creamos una matriz resultado con las mismas dimensiones de la matriz 1 y 2
		int[][] resultado = new int[matriz1.length][matriz1[0].length];
		// Si las dimensiones de las matrices son iguales (misma cantidad de filas y columnas)
		if ((matriz1.length == matriz2.length) && (matriz1[0].length == matriz2[0].length)) {
			// Recorremos los elementos
			for (int i = 0; i < matriz1.length; i++) {
				for (int j = 0; j < matriz1[i].length; j++) {
					if (operador == '+')
						resultado[i][j] = matriz1[i][j] + matriz2[i][j]; // Sumamos
					if (operador == '-')
						resultado[i][j] = matriz1[i][j] - matriz2[i][j]; // Restamos
				}
			}
			// Visualizamos el resultado
			System.out.println("El resultado de la " + operador + " es:");
			// Al método listar le pasamos como parámetros: fil, col, matriz, nombre
			Listar(resultado.length, resultado[0].length, resultado, "m1" + operador  + "m2");
		} else // en el caso de no coincidir los tamaños
			System.err.println("No coinciden los tamaños de las matrices");
	}

}

PROGRAMA


DESARROLLO TUS ALGORITMOS 🔥🔥


✅ 1. Envía tu algoritmo.
✅ 2. Indica en qué lenguaje de Programación lo deseas.
✅ 3. Para qué fecha lo quieres.
✅ 4. De que país eres (para tu forma de pago)
✅ 5. También se desarrollan al momento.
✅ 6. Los 3 primeros ejercicios son gratis.
🔸 Explico cada ejercicio que desarrollo en el código.

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!