#¿Alguien sabría hacer éste ejercicio Es
1 messages · Page 1 of 1 (latest)
Ve haciendo paso por paso, como harías para que el arreglo bidimensional (matriz) sea un arreglo de una dimensión?
un bucle que lo recorriese y fuese mandando cada valor a un nuevo array vacio?
Exacto, tendrías que iterar tu arreglo para guardarlo en otro vacio, pero tendrías que usar 2 for anidados ya que tienes una matriz
Si
Voy bien?
No, el 1° for no lo necesitas
El 2° vas bien pero tienes un error en el segundo for
Tendria que iniciar sobre 0 y no sobre i y no dependeria de la longitud de array.length si no de la longitud del arreglo anidado: array[i].length
pero el arr aun está vacío
Sobre array**
Claro, así debería estar
y ahora debería meter algo en arr?
perdon por darte el coñazo, soy un desastre
estoy aprendiendo aun
No te preocupes, todos pasamos por ahí
Vale, ahí lo tienes bien
Si, ahora deberías de añadir el item sobre arr
Como accederias al item dentro de una matriz?
Si claro, como quedaria?
Usa push para insertar un elemento, dudo que el profe te ponga un problema por usarla
Igual si te llega a poner un problema, puedes usar una variable que empiece en 0 y por cada valor insertado aumentas el contador:
arr[indiceNuevo++] = valorMatriz
Si, que te imprime arr?
Super, ya tienes el 1° paso, omite el 2° y pasa al 3°
Imagínate que ya tienes el arreglo ordenado, como harias para reemplazar los valores de array por los de arr?
borraria el array y haria un push
Pero como sabrias que la matriz es 4 - 3 - 4?
con la lenght de la original
Pero si la borras como sabria el length?
claro, pues no lo borro entonces
saco el lenght de array[i]
así me das 3 lenghts no?
4 - 3 - 4
Si y no, algo mas fácil seria iterarlo y reemplazar los valores del arreglo "ordenado"
vale osea que hago otro for para recorrerlo
pero claro, mi duda es como lo "comparo" con el array original para colocarlo
No tienes que comparar, itera el arreglo original y vas sacando el valor del arreglo ordenado, vas a necesitar una variable contadora, que empiece en 0 y vaya aumentando
No pasa nada
Tienes que hacer la misma iteración solo que ya no haras un push si no reasignación del valor
he hecho la función para que me lo imprima, el problema es ordenarlo
let length = 0;
for (let i = 0; i < array.length; i++) {
for (let j = 0; j < array[i].length; j++) {
array[i][j] = arr[length++];
}
}
Es así, estás modificando el valor de [i][j] de acuerdo al valor que este en arr
El resultado final debe ser el mismo arreglo, por que no se esta haciendo un ordenamiento
Imprime array
Listo, el 3° paso ya lo tendrías, lo que faltaría es añadir el 2° que debería ordenar el arreglo
Aqui viene lo complicado, hay diferentes modelos de ordenamiento, pero te explicaré el mas sencillo, para ordenar un arreglo es suficiente con validar una posición con el siguiente, y si es menor cambian de lugar, sino pues sigue en el mismo, y así con todos las posiciones, el resultado final es un arreglo ordenado
Es como si tienes a 10 personas en fila y quieres ordenarlos uno a uno, empiezas con el 1° miras si es mas alto que el 2° y lo mas moviendo
Te pasaré el código de esta iteración, analízalo y me avisa si lo entiendes:
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}