Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jepc en 08 de Diciembre 2014, 21:16

Título: Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: jepc 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 ??
Título: Re:Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: Ogramar 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]);
    }
}
Título: Re:Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: jepc 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
Título: Re:Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: Ogramar 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]);
        }
    }
}
Título: Re:Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: jepc 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


Título: Re:Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: Ogramar 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
Título: Re:Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: jepc 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;
}
Título: Re:Como guardar SOLO LA FILA de una matriz en un vector en java
Publicado por: Ogramar 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