[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 436

 

Existe un ArrayTemp[100] en el que todos los elementos son de tipo entero y están ordenados de forma ascendente del 1 al 100.

Necesito eliminar los primeros 1-50 elementos y reducir el tamaño del array a [50].

Pensé en hacerlo copiando la segunda mitad de la matriz a la temporal, redimensionando la original y luego copiando de nuevo, de la temporal a la original.

- ¿Hay una forma más sencilla?

Gracias.

 
chief2000:

Existe un ArrayTemp[100] en el que todos los elementos son de tipo entero y están ordenados de forma ascendente del 1 al 100.

Necesito eliminar los primeros 1-50 elementos y reducir el tamaño del array a [50].

Pensé en hacerlo copiando la segunda mitad de la matriz a la temporal, redimensionando la original y luego copiando de nuevo, de la temporal a la original.

- ¿Hay una forma más sencilla?

Gracias.



Podrías ordenar en orden descendente y luego simplemente redimensionar el array. Creo que eso sería más rápido. Sin embargo, ¿quién sabe?)
 
Figar0:

Podrías ordenar en orden descendente y luego simplemente redimensionar el array. Creo que eso sería más rápido. Sin embargo, ¿quién sabe?)

Gracias.

 
Vinin:

Buenos primeros pasos, Olga Alexandrovna. 330 líneas de código


¡Buenos días! No sé cómo juzgarlo: como un elogio o viceversa, pero en cualquier caso, gracias por la respuesta.

No encuentro la solución, desgraciadamente, por eso lo considero así - lo principal es la calidad y la alfabetización, y con ello, según entiendo, tengo una laguna, porque el código no va.

Espero una respuesta a mi pregunta .....

 

Ayuda a la gente buena que puede

Aquí está el código en el que la orden debe ser eliminado después de la expiración del tiempo, esta es la condición

MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber

¿Por qué si inserto esta condición en el primer operador if, el otro operador que está en él no tiene en cuenta esta condición?

Es decir, este código no funciona y borra todas las órdenes pendientes a la vez.

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }

Y este código funciona y no elimina los pedidos de una vez.

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP && MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }
 

¿Puede decirme para qué se utilizan los puntos de interrupción? He buscado en el foro pero no he encontrado ninguna información. ¿Cómo lo utilizo?

 
chief2000:

Existe un ArrayTemp[100] en el que todos los elementos son de tipo entero y están ordenados de forma ascendente del 1 al 100.

Necesito eliminar los primeros 1-50 elementos y reducir el tamaño del array a [50].

Pensé en hacerlo copiando la segunda mitad de la matriz a la temporal, redimensionando la original y luego copiando de nuevo, de la temporal a la original.

Podrías no hacer nada y considerar el elemento 50 como elemento inicial. ArrayCopy tardará algún tiempo de todos modos.
 
sss2019:

Ayuda a la gente buena que puede

Aquí está el código en el que la orden debe ser eliminado después de la expiración del tiempo, esta es la condición

¿Por qué si inserto esta condición en el primer operador if, el otro operador que está dentro de él no tiene en cuenta esta condición?

Es decir, este código no funciona y borra todas las órdenes pendientes a la vez.

Y este código funciona y no elimina los pedidos de una vez.

Por lo general, es una buena idea revisar los pedidos empezando por el último. En el segundo caso, no tengas miedo de añadir paréntesis en la condición.

 
fore-x:

¿Puede decirme para qué se utilizan los puntos de interrupción? He buscado en el foro pero no encuentro información. ¿Cómo lo utilizo?

No funciona. Lo hice pensando que sería un depurador adecuado, pero no es así.
 
splxgf:
Puedes no hacer nada y considerar el elemento 50 como el inicial. ArrayCopy tardará algún tiempo en cualquier caso.

La cuestión es que el array debe incluir periódicamente más elementos (expandirse), lo que afecta a la velocidad de optimización/prueba. Por lo tanto, en los momentos "favorables" lo devuelvo al estado inicial.

La solución de Figar0: resultó ser más sencilla que la mía y funciona bien.

Gracias.