Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: fst091 en 30 de Octubre 2016, 05:48
-
Hola compañeros, espero puedan ayudarme, me quede atorado del punto 4 en adelante, de antemano muchas gracia, esta es la practica que tengo que hacer,:
Excepciones_Matriz:
La clase debe tener los siguientes atributos:
* 3 matices de tipo entero
*Un atributo para renglones y otro para columnas
*Un atributo para contar las excepciones generadas.
Los métodos y el constructor tendrán las siguientes especificaciones:
1. Constructor: En base a un par de variables leídas por teclado en el método main de la clase Principal, se deben inicializar los atributos para renglones y columnas, usar polimorfismo con el comando this, por ejemplo:
this.columnas = columnas;
this.renglones = renglones;
Una vez inicializado los atributos anteriores, inicializar cada una de las matrices con las dimensiones que dio el usuario.
2. Llenado_Aleatorio: Mediante un objeto de la clase Random llenar las matrices. La matriz A se llenará con números aleatorios en un rango de [0, 20] y la matriz B se llenará con números aleatorios en un rango de [0, 10]
3. Desplegar_Matrices: Se deben desplegar los valores aleatorios con los cuales fueron llenadas las matrices A y B.
4. Division_Matrices: La idea general de este método es llenar las localidades de la matriz C con la división entre cada localidad 𝑖,𝑗 ∀ 𝑖=0,1,…,𝑛−1 y
𝑗=0,1,…,𝑚−1. Se puede ver que puede haber el caso en el que la división no se pueda representar, por ejemplo supónganse que para la casilla [2][3] en la matriz A hay un 12 y en la matriz B hay un 0, claramente se puede ver que la división no se puede realizar y generaría una Excepción de tipo ArithmeticException.
Es por esto que, en este método para llenar las localidades de la matriz C, se invocará una función que se debe llamar Divide, el cual será descrito a continuación.
5. Divide: En esta función se debe implementar un bloque try – catch para poderle hacerle frente a cada una de las excepciones que se puedan presentar en la división de las localidades de la matriz, es aquí donde el atributo para contar excepciones se incrementara cuando se presente una excepción mostrando en pantalla el número de excepciones.
Dado que es una función, se debe regresar la división cuando sea permitida (dentro del bloque try) o -1 cuando se genere una excepción (bloque catch)
Cabe mencionar que la función Divide tendrá un grado de visibilidad privado.
Principal:
En esta clase se debe crear el método main y dentro crear un objeto de la clase Excepciones_Matriz. Se deben pedir al usuario las dimensiones de la matriz y después se
deben llamar a los métodos Llenado_Aleatorio, Despliega_Matrices y Divisiones_Matrices
package Parte_Final;
import java.util.Random;
public class Excepciones_Matriz {
public int[][]a;
public int[][] b ;
public int [][]c;
int filas;
int columnas;
int excepciones;
public Excepciones_Matriz(int filas, int columnas) {
this.filas = filas;
this.columnas = columnas;
a = new int [filas][columnas];
b = new int [filas][columnas];
}
private void Llenado() {
Random r = new Random ();
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
a[i][j] = r.nextInt(20)+ 1;
}
}
for (int k = 0; k < filas; k++) {
for (int l = 0; l <columnas; l++) {
b[k][l] = r.nextInt(10)+ 1;
}
}
}
public void Desplegar() {
Llenado ();
System.out.println("Matriz A");
for (int i = 0; i < filas; i++) {
System.out.printf("\n");
for (int j = 0; j < columnas; j++) { // recorro la matriz
System.out.print(a[i][j]+"\t");
}
}
System.out.println("\n");
System.out.println("Matriz B");
for (int k = 0; k <filas; k++) {
System.out.printf("\n");
for (int l = 0; l < columnas; l++) { // recorro la matriz
System.out.print(b[k][l]+"\t");
}
}
}
}
package Parte_Final;
import java.util.Scanner;
import Parte_Final.Excepciones_Matriz;
public class Principal {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
System.out.println("Ingresa el valor de los renglones");
int renglones = sc.nextInt ();
System.out.println("Ingresa el valor de las 2columnas");
int columnas = sc.nextInt ();
Excepciones_Matriz m = new Excepciones_Matriz(renglones, columnas);
m.Desplegar();
}
}
-
Hola fst091
Para realizar la división puedes usar dos bucles for anidados de modo que recorras los índices de las matrices, primero filas y luego columnas (o al revés si prefieres).
Para la gestión de excepciones puedes mirarte la explicación que hay en este curso: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&Itemid=180
Saludos