Autor Tema: Como guardar SOLO LA FILA de una matriz en un vector en java  (Leído 17796 veces)

jepc

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Como guardar SOLO LA FILA de una matriz en un vector en java
« en: 08 de Diciembre 2014, 21:16 »
hola que tal alguien podría ayudarme
lo que pasa es que tengo una matriz así :

1 2 3=6
4 5 6=15
7 8 9=24

- 6 15 y 24 se guardan en un arreglo (osea los resultados de la suma de las filas ).

y lo que quiero es guardar solamente la fila  del resultado mas alto que en este caso seria 24 quedando otro arreglo que solo guarde : 7 8 9  alguien podría
orientarme ??
« Última modificación: 08 de Diciembre 2014, 21:22 por jepc »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Como guardar SOLO LA FILA de una matriz en un vector en java
« Respuesta #1 en: 10 de Diciembre 2014, 08:17 »
Hola, yo lo haría así: creas la matriz de m filas y n columnas. Creas un arreglo denominado sumaFilas que tendrá un tamaño igual al número de filas

Con un for i=0 to numeroDeFilas-1
   for j= 0 to numeroDeColumnas-1
      sumaFila[ i ] = sumaFila[ i ]
...
...


De esta manera ya tienes lo que suma cada fila, luego lo ordenas con Arrays.sort y ya tienes los valores de las sumas ordenados.

El código este es un ejemplo:

Código: [Seleccionar]
import java.util.Arrays;

public class Test {

    public static void main (String[] args) {

        int matriz[][] = new int[3][3];
        int sumaFila[] = new int[3];
        matriz[0][0]=1; matriz[0][1]=2; matriz[0][2]=3;
        matriz[1][0]=4; matriz[1][1]=5; matriz[1][2]=6;
        matriz[2][0]=7; matriz[2][1]=8; matriz[2][2]=9;

        for (int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                System.out.println(""+matriz[i][j]);
                sumaFila[i]=sumaFila[i]+matriz[i][j];
            }
            System.out.println("La suma de la fila es "+sumaFila[i]);
        }
        Arrays.sort(sumaFila);
        System.out.println("La suma de fila que tiene un valor más grande es "+sumaFila[2]);
    }
}

jepc

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Como guardar SOLO LA FILA de una matriz en un vector en java
« Respuesta #2 en: 10 de Diciembre 2014, 18:52 »
hola Ogramar lo que eh echo es parecido a lo tuyo pero lo que realmente quiero y eh intentado y no se sale es guardar esa fila en ejemplo :

matriz

1 2 3=6
4 5 6=15
7 8 9=24

valor de la fila mas alto = 24

vector nuevo = 7  8  9

osea tiene
vector[0]=7
vector[1]=8
vector[2]=9

lo eh intentado ya varias veces pero solo obtengo
vector[0]=3
vector[1]=6
vector[2]=9

y pues no se si me explique bien obviamente la matriz es de otra dimension nxn  y se que para eso la debo de recorrer con dos for  pero como ???? no se si ahora me entiendas

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Como guardar SOLO LA FILA de una matriz en un vector en java
« Respuesta #3 en: 11 de Diciembre 2014, 08:16 »
He modificado el código para adaptarme a lo que decías, es decir, que se guarde en un vector la fila de la matriz sea un valor máximo. Pruébalo y ya me dices si te funciona o no:

Código: [Seleccionar]
public class Test {

    public static void main (String[] args) {

        int maximo = 0;
        int indiceFilaMaximo = 0;
        int matriz[][] = new int[3][3];
        int sumaFila[] = new int[3];
        int vectorNuevo[] = new int[3];
        matriz[0][0]=1; matriz[0][1]=2; matriz[0][2]=3;
        matriz[1][0]=4; matriz[1][1]=5; matriz[1][2]=6;
        matriz[2][0]=7; matriz[2][1]=8; matriz[2][2]=9;

        for (int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                System.out.println(""+matriz[i][j]);
                sumaFila[i]=sumaFila[i]+matriz[i][j];
            }
            System.out.println("La suma de la fila es "+sumaFila[i]);
            if (sumaFila[i]>maximo) {indiceFilaMaximo = i; maximo = sumaFila[i];}
        }

        System.out.println("La suma de fila que tiene un valor más grande es "+maximo);
        System.out.println("La fila con esa suma máxima es la fila: " + indiceFilaMaximo);
        for(int i=0; i<3; i++){
            vectorNuevo[i]=matriz[indiceFilaMaximo][i];
            System.out.println("Vector nuevo ["+i+"]="+vectorNuevo[i]);
        }
    }
}

jepc

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Como guardar SOLO LA FILA de una matriz en un vector en java
« Respuesta #4 en: 12 de Diciembre 2014, 02:41 »
Gracias ya lo tengo es parecido al que pusiste tu de todos modos gracias por tomarte la molestia de constestar jeje  oye una ultima duda  con este ejemplo

esta es la matriz que habiamos dicho (solo de ejemplo)

1 2 3=6
4 5 6 =15
7 8 9=24

y ya guardamos en el vector nuevo: vectorNuevo[7,8,9] 
*********************************

ahora  genero un numero aleatorio digamos  de   10 a 25  y los resultados de la sumas de las filas 1 y 2 entran en ese rango ¿como le hago para que cada fila se guarde en un vector ?
 es que ya lo eh intentado pero  no me diferencia la fila  y en el  los 2 vectores me guarda  la fila del resultado 24(el del ejemplo )  cuando deberia de poner en un vector una fila y en el otro vector  otra fila

vectorNuevo   [7,8,9]
vectorNuevo1  [7,8,9]


me podrias echar una ultima ayudadita ????? por favor  y te estare eternamente agradecido



Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Como guardar SOLO LA FILA de una matriz en un vector en java
« Respuesta #5 en: 12 de Diciembre 2014, 09:19 »
Hola, ¿para qué creas el número aleatorio? No entiendo bien lo que quieres hacer. Si la comparación se basa en que la suma de las dos filas esté entre 10 y 25, ¿para qué te sirve el número aleatorio? Pega el código que tengas hecho para verlo y poder decirte algo. Salu2

jepc

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Como guardar SOLO LA FILA de una matriz en un vector en java
« Respuesta #6 en: 29 de Diciembre 2014, 22:27 »
hola bueno dejando de lado ese tema me podrias enseñar como llenar una matriz con aleatorios sin que estos se repitan

lo que llevo es este método
solo llena la matriz
Código: [Seleccionar]
public int [][] generar(int Tindividuos,int cromosomas) throws IOException{     


            numI= Tindividuos;
            numC=cromosomas;
         
            matriz = new int [numI][numC];
            P=  new int [numI][numC];
            Random rnd = new Random();
            int n;
           
            for (int i=0; i<numI; i++){
for (int j=0; j<numC; j++){

                            matriz[i][j] = rnd.nextInt(60)+1;
}

                }   
           
                for(int i=0; i<numI; i++){
                    System.out.println(Arrays.toString(matriz[i]));
                }
                         System.out.println();
         
            return matriz;
}

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Como guardar SOLO LA FILA de una matriz en un vector en java
« Respuesta #7 en: 30 de Diciembre 2014, 11:54 »
Para evitar que se repitan una vez generas el aleatorio tendrás que recorrer con un bucle for y comparar a ver si el número generado ya existía. Si ya existía tendrás que volver a generar el aleatorio hasta que no se repita. El esquema sería este:

boolean estaRepetido = true;
while (estaRepetido == true) {
estaRepetido = false; //Suponemos que no esta repetido
generar El aleatorio
for ( recorrer la matriz)
Si el aleatorio es igual a algún numero en la matriz Entonces estaRepetido = true
fin del for
}

Se sale del while cuando se ha verificado que no está repetido, una vez fuera ya estableces que el valor del elemento de la matriz es el nuevo valor.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".