diff --git a/.idea/misc.xml b/.idea/misc.xml index 2328c00..554d1e1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,10 @@ + + + diff --git a/src/capitulo04/bloque06/Matrices.java b/src/capitulo04/bloque06/Matrices.java new file mode 100644 index 0000000..68f4bf5 --- /dev/null +++ b/src/capitulo04/bloque06/Matrices.java @@ -0,0 +1,177 @@ +package capitulo04.bloque06; + +import static capitulo04.utils.Utils.*; + +public class Matrices { + public static void main(String[] args) { + int[][] matrizVacia = new int[5][5]; + mostrarMatriz(rellenarMatriz(matrizVacia)); + + int[][] matrizRellena = new int[][]{ + {0, 6, 7, 2, 3}, + {2, 0, 7, 8, 3}, + {2, 6, 0, 6, 3}, + {2, 6, 7, 0, 3}, + {2, 6, 7, 1, 0}}; + + System.out.println(matrizEsPositiva(matrizRellena)); + System.out.println(matrizEsDiagonal(matrizRellena)); + System.out.println(matrizEsTriangularSuperior(matrizRellena)); + System.out.println(matrizEsDispersa(matrizRellena)); + mostrarArrayNums(construirArrayDeMatriz(matrizRellena)); + System.out.println(matrizEsSimetrica(matrizRellena)); + mostrarMatriz(matrizTraspuesta(matrizRellena)); + mostrarMatriz(matrizOpuesta(matrizRellena)); + mostrarMatriz(matrizSinFila(matrizRellena, solicitarIntScanner("Introduzca la fila a eliminar de la matriz: "))); + + } + + public static int[][] rellenarMatriz(int[][] matriz) { + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + matriz[i][j] = (int) generarNumAleatorio(100); + } + } + return matriz; + } + + public static void mostrarMatriz(int[][] matriz) { + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + System.out.print(matriz[i][j] + "\t"); + } + System.out.println(); + } + } + + public static boolean matrizEsPositiva(int[][] matriz) { + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + if (matriz[i][j] < 0) { + return false; + } + } + } + return true; + } + + public static boolean matrizEsDiagonal(int[][] matriz) { + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + if (i != j && matriz[i][j] != 0) { + return false; + } + } + } + return true; + } + + public static boolean matrizEsTriangularSuperior(int[][] matriz) { + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + if (i > j && matriz[i][j] != 0) { + return false; + } + } + } + return true; + } + + public static boolean matrizEsDispersa(int[][] matriz) { + boolean esDispersa = true; + + for (int i = 0; i < matriz.length; i++) { + boolean filaTieneCero = false; + for (int j = 0; j < matriz[i].length; j++) { + if (matriz[i][j] == 0) { + filaTieneCero = true; + break; + } + } + if (!filaTieneCero) { + esDispersa = false; + break; + } + } + + if (esDispersa) { + for (int j = 0; j < matriz[0].length; j++) { + boolean columnaTieneCero = false; + for (int i = 0; i < matriz.length; i++) { + if (matriz[i][j] == 0) { + columnaTieneCero = true; + break; + } + } + if (!columnaTieneCero) { + esDispersa = false; + break; + } + } + } + + return esDispersa; + } + + public static int[] construirArrayDeMatriz(int[][] matriz) { + int elementosMatriz = 0; + for (int i = 0; i < matriz.length; i++) { + elementosMatriz += matriz[i].length; + } + int[] array = new int[elementosMatriz]; + int indiceArray = 0; + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + array[indiceArray] = matriz[i][j]; + indiceArray++; + } + } + return array; + } + + public static boolean matrizEsSimetrica(int[][] matriz) { + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + if (matriz[i][j] != matriz[j][i]) { + return false; + } + } + } + return true; + } + + public static int[][] matrizTraspuesta(int[][] matriz) { + int[][] matrizTraspuesta = new int[matriz[0].length][matriz.length]; + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + matrizTraspuesta[j][i] = matriz[i][j]; + } + } + return matrizTraspuesta; + } + + public static int[][] matrizOpuesta(int[][] matriz) { + int[][] matrizOpuesta = new int[matriz.length][matriz[0].length]; + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz[i].length; j++) { + matrizOpuesta[i][j] = -matriz[i][j]; + } + } + return matrizOpuesta; + } + + + public static int[][] matrizSinFila(int[][] matriz, int fila) { + int[][] matrizSinFila = new int[matriz.length - 1][matriz[0].length]; + int indiceFila = 0; + for (int i = 0; i < matriz.length; i++) { + if (i != fila - 1) { + for (int j = 0; j < matriz[i].length; j++) { + matrizSinFila[indiceFila][j] = matriz[i][j]; + } + indiceFila++; + } + } + return matrizSinFila; + } +}