PDA

Ver la Versión Completa : Reordenamiento de una matriz


santiago14
30-11-2023, 20:31:00
Tengo una Matriz(M) Necesito reordenarla en una nueva matriz (A) que tenga la siguiente forma:
La matriz M tiene 5 columnas integer. Pero ese no es el problema, sino como reordenarla de la manera que necesito.

A(1)=M(1)
A(2)=M(2)
A(3)=M(501)
A(4)=M(502)
...
A(497)=M(499)
A(498)=M(500)
A(499)=M(999)
A(500)=M(1000)

A(501)=M(1001)
A(502)=M(1002)
A(503)=M(1501)
A(503)=M(1502)
...
A(997)=M(1499)
A(998)=M(1500)
A(999)=M(1999)
A(1000)=M(2000)
Y así debe seguir con los siguientes lotes.
...

En lotes de 500. Me estoy dando vueltas con esto. Espero haber sido claro y que puedan darme una mano con esto.
Feliz 2024 con mucho adelanto.

Gracias.

Casimiro Notevi
01-12-2023, 09:33:45
¿Tiene 5 columnas y quieres ordenar en lotes de 500?

duilioisola
01-12-2023, 14:33:08
La verdad es que no me queda nada claro...

¿Qué es "Matriz"?
Para mí es una estructura matemática que se representa en Delphi como array[1..n, 1..n] (si tiene dos dimensiones).

Cuando dices reordenarla... ¿te refieres a ordenar o a dividir los datos de a 500 elementos?
Ordenar para mi es cambiar el orden de los elementos (Sort en inglés)
Dividir en lotes de 500 elementos es una cosa distinta. (Split en inglés).

Por otro lado dices "reordenar en otra matriz".
Supongo que te refieres a algo así:
"Teniendo una matriz "M" copiarla a otra matriz "A" con orden sobre la primera columna".
Ten en cuenta que no es lo mismo ordenar una "matriz" que copiarla a otra con alguna transformación (orden).
En el primer caso M será modificada y en el segundo tendrás las dos "matrices", original y ordenada.

Y finalmente no logro entender el orden del ejemplo...

A(1)=M(1)
A(2)=M(2)
A(3)=M(501)
A(4)=M(502)
...
A(497)=M(499)
A(498)=M(500)
A(499)=M(999)
A(500)=M(1000)

Por lo que entiendo los dos primeros elementos se corresponden en las "matrices" origen y destino,
los dos siguiente tienen una "distancia" de 498 elementos.
Luego ha otros tantos elementos
Finalmente haces lo mismo con los últimos 4 elementos de la serie de 500.