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 Mensajes
Páginas: [1]
1  Programación / Java / Re: Ayuda Matrices Dispersas en: 29 Marzo 2015, 18:09 pm
Hola,

¿Qué significa ésto?
Tienes razon, perdon pero apenas estoy aprendiendo el lenguaje.
Bueno, La matriz B es la segunda matriz , sumare Mat[][] y B[][], R[][] sera la matriz resultante.
El if lo que hace es comparar que tengan las mismas dimensiones para que se puedan sumar, ya que en una matriz dispersa en forma de tripletas, La posicion [ 0 ][ 0 ] guarda el numero de filas de la matriz, la [ 0 ][1] el numero de columnas, si se cumple esto puedo sumar.
El while lo que hace es recorrer las dos matrices, la recorrera hasta que i<= Mat[ 0 ][2] +1 , en lforma de tripletas en la posicion [ 0 ][2] va a cantidad de datos diferentes de cero(0).

2  Programación / Java / Re: Ayuda Matrices Dispersas en: 28 Marzo 2015, 22:12 pm
¿Porque ilegible?,¿El metodo suma que tienes no es para una matriz normal?

Pongo un ejemplo de representacion de matrices dispersas en tripletas

3  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