Matrices (cantidad de filas y columnas)
Como hemos visto para definir y crear la matriz utilizamos la siguiente sintaxis:
int[][] mat;
Creación:
mat=new int[3][4];
Como las matrices son objetos en Java disponemos por un lado del atributo length que almacena la cantidad de filas de la matriz:
System.out.println("Cantidad de filas de la matriz:" + mat.length);
También podemos preguntarle a cada fila de la matriz la cantidad de elementos que almacena:
System.out.println("Cantidad de elementos de la primer fila:" + mat[0].length);
Problema 1:
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir la matriz completa y la última fila.
Programa:
import java.util.Scanner; public class Matriz5 { private Scanner teclado; private int[][] mat; public void cargar() { teclado=new Scanner(System.in); System.out.print("Cuantas fila tiene la matriz:"); int filas=teclado.nextInt(); System.out.print("Cuantas columnas tiene la matriz:"); int columnas=teclado.nextInt(); mat=new int[filas][columnas]; for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { System.out.print("Ingrese componente:"); mat[f][c]=teclado.nextInt(); } } } public void imprimir() { for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { System.out.print(mat[f][c]+" "); } System.out.println(); } } public void imprimirUltimaFila() { System.out.println("Ultima fila"); for(int c=0;c<mat[mat.length-1].length;c++) { System.out.print(mat[mat.length-1][c]+" "); } } public static void main(String[] ar) { Matriz5 ma=new Matriz5(); ma.cargar(); ma.imprimir(); ma.imprimirUltimaFila(); } }
En este ejemplo cada vez que se ejecute el programa el tamaño de la
matriz lo define el usuario, para ello ingresamos por teclado dos
enteros y seguidamente procedemos a crear la matriz con dichos valores:
System.out.print("Cuantas fila tiene la matriz:"); int filas=teclado.nextInt(); System.out.print("Cuantas columnas tiene la matriz:"); int columnas=teclado.nextInt(); mat=new int[filas][columnas];
Ahora las estructuras repetitivas las acotamos preguntando a la misma
matriz la cantidad de filas y la cantidad de elementos de cada
fila(mat.length almacena la cantidad de filas de la matriz y
mat[f].length cuando f vale cero accedemos a la cantidad de elementos de
la fila cero y así sucesivamente para cada valor de f):
for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { System.out.print("Ingrese componente:"); mat[f][c]=teclado.nextInt(); } }
El algoritmo de impresión es idéntico al visto anteriormente con la modificación de las condiciones de los for:
public void imprimir() { for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { System.out.print(mat[f][c]+" "); } System.out.println(); } }
Para imprimir la última fila debemos disponer un valor fijo en el
subíndice de la fila (en este caso no podemos disponer un número fijo
sino preguntarle a la misma matriz la cantidad de filas y restarle uno
ya que las filas comienzan a numerarse a partir de cero:
mat[mat.length-1][c])
También la condición del for debemos acceder al atributo length de la última fila mat[mat.length-1].length
for(int c=0;c<mat[mat.length-1].length;c++) { System.out.print(mat[mat.length-1][c]+" "); }
Problema 2:
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir el mayor elemento y la fila y columna donde se almacena.
Programa:
import java.util.Scanner; public class Matriz6 { private Scanner teclado; private int[][] mat; public void cargar() { teclado=new Scanner(System.in); System.out.print("Cuantas fila tiene la matriz:"); int filas=teclado.nextInt(); System.out.print("Cuantas columnas tiene la matriz:"); int columnas=teclado.nextInt(); mat=new int[filas][columnas]; for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { System.out.print("Ingrese componente:"); mat[f][c]=teclado.nextInt(); } } } public void imprimirMayor() { int mayor=mat[0][0]; int filamay=0; int columnamay=0; for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { if (mat[f][c]>mayor) { mayor=mat[f][c]; filamay=f; columnamay=c; } } } System.out.println("El elemento mayor es:"+mayor); System.out.println("Se encuentra en la fila:"+filamay+ " y en la columna: "+columnamay); } public static void main(String[] ar) { Matriz6 ma=new Matriz6(); ma.cargar(); ma.imprimirMayor(); } }
Para obtener el mayor elemento de la matriz y la fila y columna donde
se ubica debemos inicializar una variable mayor con el elemento de la
fila cero y columna cero (esto lo hacemos suponiendo que en dicha
posición se almacena el mayor):
int mayor=mat[0][0]; int filamay=0; int columnamay=0;
Luego mediante dos for recorremos todos los elementos de la matriz y
cada vez que encontramos un elemento mayor al actual procedemos a
actualizar la variable mayor y la posición donde se almacena:
for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { if (mat[f][c]>mayor) { mayor=mat[f][c]; filamay=f; columnamay=c; } } }
Fuente: http://www.tutorialesprogramacionya.com/javaya/
No hay comentarios.:
Publicar un comentario