Buenas tardes, estoy haciendo un ejercicio en java de matrices dispersas en tripletas, el cual es un menu con lo siguiente:
1.Mostrar la matriz dispersa.
2.Sumar dos matrices dispersas.
3.multplicar.
4.Sumar traspuestas.
5.Comparar dos matrices dispersas.
Mis dudas son las siguientes:
-¿Uso bien la segunda matriz?,estoy perdido en eso, no se si la puedo haer con el contructor.
-¿Como podria hacer las traspuestas?
-¿La suma y la multplicacion estan bien?¿necesitan otra condicion?
-¿Que otros errores tengo?
Lo que llevo es lo siguiente:
Gracias de antemano.
1.Mostrar la matriz dispersa.
2.Sumar dos matrices dispersas.
3.multplicar.
4.Sumar traspuestas.
5.Comparar dos matrices dispersas.
Mis dudas son las siguientes:
-¿Uso bien la segunda matriz?,estoy perdido en eso, no se si la puedo haer con el contructor.
-¿Como podria hacer las traspuestas?
-¿La suma y la multplicacion estan bien?¿necesitan otra condicion?
-¿Que otros errores tengo?
Lo que llevo es lo siguiente:
Código [Seleccionar]
import java.util.Scanner;
public class MatDisp {
private Scanner teclado;
private int Nfilas;
private int Ncol;
private int CantDatos;
private int[][] Mat;
//Constructor
public MatDisp(int Nf, int Nc, int Cd){
Nfilas = Nf;
Ncol = Nc;
CantDatos = Cd;
Mat = new int [CantDatos +1][3];
Mat[0][0]= Nfilas;
Mat[0][1]= Ncol;
Mat[0][2]= CantDatos;
}
//Llenar
public void Llenar(){
teclado=new Scanner(System.in);
int i;
for(i = 1;i < Mat[0][2] + 1;i++){
System.out.println("Ingrese la fila ");
Mat[i][0] = teclado.nextInt();
System.out.println("Ingrese la columna ");
Mat[i][1] = teclado.nextInt();
System.out.println("Ingrese el dato diferente de 0");
Mat[i][2] = teclado.nextInt();
while(Mat[i][2] == 0){
System.out.println("No se puede ingresar un dato 0");
System.out.println("Ingrese el dato diferente de 0");
Mat[i][2] = teclado.nextInt();
}
}
}
//Mostrar
public void Mostrar(){
int i;
for(i = 1;i < Mat[0][2] + 1;i++){
System.out.println(Mat[i][2]);
}
}
//Sumar
public void Sumar(int B[][]){
int i = 1;
int[][] R;
if((Mat[0][0] == B[0][0]) && (Mat[0][1] == B[0][1])){
R = new int[Mat[0][0]][Mat[0][1]];
while((i <= B[0][2]+1)&&(i <= Mat[0][2]+1)){
if((B[i][0] == Mat[i][0]) && (B[i][1] == Mat[i][1])){
R[i][0] = Mat[i][0];
R[i][1] = Mat[i][1];
R[i][2] = Mat[i][2] + B[i][2];
if(R[i][2] == 0){
//eliminar
//redimensionar
}
i =i + 1;
}
else{
R[i][0] = Mat[i][0];
R[i][1] = Mat[i][1];
R[i][2] = Mat[i][2];
i =i + 1;
}
}
}
}
//Multiplicar
public void multiplicacion(int B[][]){
int i = 1;
int[][] R;
if(Mat[0][1] == B[0][0]){
R = new int[Mat[0][0]][Mat[0][1]];
while((i <= B[0][2]+1)&&(i <= Mat[0][2]+1))
if((B[i][0] == Mat[i][0])&&(B[i][1] == Mat[i][1])){
R[i][0] = Mat[i][0];
R[i][1] = Mat[i][1];
R[i][2] = Mat[i][2]*B[i][2];
i =i + 1;
}
}
else{
System.out.println("No se pueden multiplicar las matrices");
}
}
//SumarTraspuestas
public void SumarTraspuestas(int B[][]){
}
//comparar
public void Comparar(int B[][]){
int i,j;
for(i = 0;i <= Mat[0][2] + 1;i++){
for(j = 0;j <= Mat[0][2] + 1;i++) {
if(Mat[i][j] == B[i][j]){
System.out.println("Las matrices son iguales");
}
else{
System.out.println("Las matrices no son iguales");
}
}
}
}
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int Nf,Nc,Cd,Op,f,c,d;
int[][] B;
System.out.println("Ingrese el numero de filas ");
Nf = teclado.nextInt();
System.out.println("Ingrese el numero de columnas ");
Nc = teclado.nextInt();
System.out.println("Ingrese la cantidad de datos ");
Cd = teclado.nextInt();
MatDisp Tri = new MatDisp(Nf, Nc,Cd);
Tri.Llenar();
do{
System.out.println("Menu principal ");
System.out.println("1) Mostrar ");
System.out.println("2) Sumar ");
System.out.println("3) Multiplicar ");
System.out.println("4) Sumar traspuestas ");
System.out.println("5) Comparar ");
System.out.println("6) Salir ");
System.out.println("Ingrese una opcion ");
Op = teclado.nextInt();
switch(Op){
case 1 : Tri.Mostrar();
break;
case 2 : System.out.println("Ingrese el numero de filas de la matriz B");
f = teclado.nextInt();
System.out.println("Ingrese el numero de columnas de la matriz B ");
c = teclado.nextInt();
System.out.println("Ingrese la cantidad de datos de la matriz B ");
d = teclado.nextInt();
B = new int[d+1][3];
B[0][0]= f;
B[0][1]= c;
B[0][2]= d;
Tri.Llenar();
Tri.Sumar(B);
break;
case 3 : System.out.println("Ingrese el numero de filas de la matriz B");
f = teclado.nextInt();
System.out.println("Ingrese el numero de columnas de la matriz B ");
c = teclado.nextInt();
System.out.println("Ingrese la cantidad de datos de la matriz B ");
d = teclado.nextInt();
B = new int[d+1][3];
B[0][0]= f;
B[0][1]= c;
B[0][2]= d;
Tri.Llenar();
Tri.multiplicacion(B);
break;
case 5 : System.out.println("Ingrese el numero de filas de la matriz B");
f = teclado.nextInt();
System.out.println("Ingrese el numero de columnas de la matriz B ");
c = teclado.nextInt();
System.out.println("Ingrese la cantidad de datos de la matriz B ");
d = teclado.nextInt();
B = new int[d+1][3];
B[0][0]= f;
B[0][1]= c;
B[0][2]= d;
Tri.Llenar();
Tri.Comparar(B);
case 6 : break;
}
}while(Op >= 1 || Op <= 6);
}
}
Gracias de antemano.