elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Temas
Páginas: [1]
1  Programación / Java / Ayuda Matrices Dispersas en: 28 Marzo 2015, 18:10 pm
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:
Código:
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.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines