Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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
-
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:
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]);
}
}
-
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
-
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:
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]);
}
}
}
-
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
-
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
-
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
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;
}
-
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