ordenar un array de 2 dimensiones por la segunda dimensión - página 2

 

Hey Gordon, gracias por las cabezas para arriba, mientras que la lectura de ese código, me acordé de que ya tengo un fragmento de código que los bucles a través de la canasta para encontrar el mayor comercio perdedor, yo podría utilizarlo junto con un clon de ella invirtió para encontrar el mayor ganador, es ganador es mayor que perdedor, entonces puedo cerrar cada uno. Eso funcionará para lo que necesito. A veces, sólo dormir en él es el mejor generador de código de todos. Dispara, probablemente podría codificar esto durante la noche. No es una gran modificación. No tengo que tenerlas todas cerradas a la vez. Vamos a través de la primera vez, a continuación, en la próxima garrapata o vela podemos ir a través de él de nuevo, o como yo estaba hablando antes, tengo otra característica que se dispara al mismo tiempo que algo como esto sería útil. Puedo incrustarlo en la codificación de esa función.

Gracias por la apertura de los ojos Gordon.

 

Si quieres ordenar las matrices por precio, ¿por qué no cargas el precio en la primera dimensión y el ticket en la segunda dimensión?

 

Sí, eso ya estaba pensado. Entonces solo hay que copiar los datos a otro array en disposición invertida para volver a ordenar de la otra manera. Lo que decidí hacer fue mucho más simple y en realidad se ajusta a mis necesidades mucho mejor. Básicamente, hago un bucle a través de las operaciones abiertas y encuentro el mayor ganador y el mayor perdedor que es menor que el mayor ganador, entonces cierro ambos. En el siguiente tick o vela, repite el proceso. Resultó muy bien.

 
gordon:

Independientemente de cómo quieras llamarlo, la primera dimensión en un array 2D es el vector arr_name[0,1,...,n][0], así que técnicamente el primer paréntesis contiene la primera dimensión; éste es también el vector que será ordenado por ArraySort(). Del libro:

Ya que estamos en el tema de ArraySort() mencionaré 2 peculiaridades no documentadas que he encontrado a lo largo del tiempo (y estaría encantado si alguien me confirma o corrige...?):

  1. Si algunos de los elementos de la primera dimensión son idénticos, no necesariamente conservarán su orden. Obviamente, esto debería estar documentado si es "por diseño", de lo contrario lo consideraría un "bug".
  2. OrderSort() no funciona con matrices 4D (devuelve el error 4053). De nuevo, esto debería estar documentado pero no lo está.
Siento la respuesta tardía amigos... muchas cosas se interpusieron... Os aseguro que aprecio mucho vuestras respuestas.
Por cierto, estas son mis respuestas (en modo "spam" :( ) :
- En las matrices 1D no se plantea ninguna cuestión. En matrices 2D, 3D, 4D el par de corchetes más a la izquierda es siempre la primera dimensión ¿es eso correcto gordon?
 
cameofx:
- En matrices 1D no se plantea ninguna cuestión. En matrices 2D, 3D, 4D el par de corchetes más a la izquierda es siempre la primera dimensión ¿es eso correcto gordon?

Sí.

 
gordon:

Independientemente de cómo quieras llamarlo, la primera dimensión en un array 2D es el vector arr_name[0,1,...,n][0], así que técnicamente el primer paréntesis contiene la primera dimensión; éste es también el vector que será ordenado por ArraySort(). Del libro:

Ya que estamos con el tema de ArraySort() mencionaré 2 peculiaridades no documentadas que he encontrado a lo largo del tiempo (y estaría encantado si alguien me confirma o corrige...?):

  1. Si algunos de los elementos de la primera dimensión son idénticos, no necesariamente conservarán su orden. Obviamente, esto debería estar documentado si es "por diseño", de lo contrario lo consideraría un "bug".
  2. OrderSort() no funciona con matrices 4D (devuelve el error 4053). De nuevo, esto debería estar documentado pero no lo está.
Siento la respuesta tardía amigos... muchas cosas se interpusieron... Les aseguro que aprecio mucho sus respuestas.
Por cierto, estas son mis respuestas:
- En una matriz 1D no se plantea ninguna cuestión. En matrices 2D, 3D, 4D el par de corchetes más a la izquierda es siempre la primera dimensión. Esto es lo que yo entiendo también.
int    a[50];       // A one-dimensional array of 50 integers.
double m[7][50];    // Two-dimensional array of seven arrays,
                    //each of them consisting of 50 integers
Pero cuando miro esta explicación. La forma en que se describe fue "matriz bidimensional de siete matrices. cada uno de ellos consta de 50 enteros " Al contemplar esto y sus respuestas ... Esto debe
ser una explicación errónea porque sugiere que los 50 enteros son más bien el tamaño de la fila/miembro de los datos y 7 es la columna/cabecera. Esto me llevó a creer (erróneamente)
que la parte de la derecha era la parte de la fila/miembro que debíamos/puedemos redimensionar convenientemente..
- Te agradezco que compartas tu hallazgo gordon. Desgraciadamente las pruebas son un lujo para mí estos días... Solo puedo disponer de ordenador e internet de forma intermitente (es complicado).
Incluso probar en un gráfico muerto resulta ser un reto... :( . De ahí mi a veces "comprensión torcida". TBH, me baso principalmente en la memoria y las referencias ... (lo siento ..).

PS : oops.. no sabía que el post anterior había entrado. Lo he editado.
 
cameofx:
[...] Esta debe ser una explicación errónea porque sugiere que los 50 enteros son más bien el tamaño de la fila/miembro de los datos y 7 es la columna/cabecera.

No estoy seguro de lo que sugiere, pero de todos modos, la más a la izquierda es la primera dimensión. Mucha de la documentación es una traducción del ruso, muchas veces no una muy buena traducción, así que tal vez este es uno de esos casos. Lo de la columna/fila es sólo una metáfora; nos hace más fácil imaginar el array, pero no tiene nada que ver con la implementación real. Si la primera dimensión es una "fila" o una "columna" depende de ti...

 
1005phillip:


Veo la indexación y el dimensionamiento de los arrays a la manera estándar de las hojas de cálculo... Fila-Columna (mnemónico "romano-católico").

Array 1D: MiMatriz[NúmeroDeFila-1]

Array 2D: MiMatriz[NúmeroDeFila-1][NúmeroDeColumna-1]

Matriz 3D: MiMatriz[NúmeroDeFila-1][NúmeroDeColumna-1][HojaDeTrabajo-1] ....

La referencia que cité sobre la primera dimensión me confundió (ver el post anterior). Así que lógicamente no podemos redimensionar el ColumnNumber y/o WorksheetNumber
y/o BookNumber..solo el RowNumber. Que es el par de corchetes más a la izquierda en arrays 2D, 3D y 4D.
 
cameofx:
Así que lógicamente no podemos redimensionar [...]

Así es.

 
gordon:

No estoy seguro de lo que sugiere, pero en cualquier caso, la más a la izquierda es la primera dimensión. Mucha de la documentación es una traducción del ruso, muchas veces no una muy buena traducción, así que quizás este sea uno de esos casos. Lo de la columna/fila es sólo una metáfora; nos hace más fácil imaginar el array, pero no tiene nada que ver con la implementación real. Si la primera dimensión es una "fila" o una "columna" depende de ti...

sip... desafortunadamente, muchos de nosotros -estoy seguro de que hablo por muchos novatos por ahí.. - se basan con demasiada frecuencia en la documentación existente...