¿Cómo puedo eliminar un elemento de una matriz (unidimensional bidimensional)? - página 2

 
Seric29:

cómo funciona la función

No hay ninguna descripción en el manual donde leer sobre ello?

¿Lees este hilo? Admin respondió - descripción en breve

 
Seric29:

No reduzco el tamaño del array sino que elimino un elemento del mismo...

void  ArrayFill( 
   void&  array[],       // массив 
   int    start,         // индекс начального элемента 
   int    count,         // количество элементов 
   void   value          // значение, которым заполняется массив 
   );

¿No funcionaría?

 
Ilya Malev:

El compañero ha escrito: unidimensional y bidimensional. Su función no funciona con las dos dimensiones. Muéstrame cómo hacer que una función con el mismo nombre funcione para ambos :)

No he visto nada sobre la bidimensionalidad. Pero el bidimensional en sí mismo también copiado, sólo ligeramente diferentes valores de qué índice para escribir a la recogida de la matriz y de qué índice para leer de la fuente. En principio, el problema puede resolverse para matrices de 3-4 dimensiones permitidas en mql

 
Seric29:

No estoy reduciendo el tamaño del array, sino que estoy eliminando un elemento del mismo, que son cosas diferentes. Entiendo que su función eliminó el valor1,13612, se especifica en la líneadellArrayElement(3, array); es decir, el 3er elemento se elimina de la matriz, ¿no es así? ¿Cuál es la velocidad de estos experimentos, cuánto cargan el programa?

Pero si la condición es

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

¿Cómo puedo eliminar un elemento de una matriz (unidimensional bidimensional)?

Seric29, 2018.12.21 23:50

¿Cómo se elimina un elemento de una matriz? ¿Necesito saber el número de elementos almacenados en él?

entonces, naturalmente, el tamaño de la matriz debe reducirse. ¿No es así?

Sí, para el ejemplo era el 3er elemento del array el que se eliminaba. Las velocidades y algunas partes del cuerpo se miden en otras ramas. En este caso la velocidad es bastante normal. Hay que hacer varias pasadas de varios cientos de eliminaciones para obtener valores de velocidad aproximados. ¿Por qué querría hacer eso?

 
https://www.mql5.com/ru/forum/289594
Очистка массива от заданного (ых) элементов
Очистка массива от заданного (ых) элементов
  • 2018.11.12
  • www.mql5.com
Есть массив содержащий набор данных по типу 1,2,3,6,9,5,6,3,25,6,8,7,4 нужно удалить например значения 3 и на выходе получить тот же массив без 3 и...
 
Alexey Viktorov:

No he visto nada sobre la bidimensionalidad. Pero la bidimensionalidad también se copia en sí misma, sólo que con valores ligeramente diferentes de qué índice escribir en el array y qué índice leer de la fuente. En principio, el problema puede resolverse para matrices de 3-4 dimensiones permitidas en mql

Supongo que en principio se puede resolver. Excepto que no parece que se pueda resolver para una función con el mismo nombre.

 
Ilya Malev:

Supongo que en principio se puede resolver. Excepto que no parece que se pueda resolver para una función con el mismo nombre.

¿Por qué? Hazlo como una clase elemental.

Algo así como

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

Fue escrito "sobre la marcha", así que pido disculpas por las posibles inexactitudes.

 

Si el orden de los elementos de la matriz no es importante, se hace lo suficientemente rápido:

#define  ARRAY_RESERVE_SIZE    1000

template<typename T>
void DeleteElementFromArray(T &array[], int elementToDelete)
{  
   int arraySize = ArraySize(array);
   if (elementToDelete < 0 || elementToDelete >= arraySize)
      return;
      
   array[elementToDelete] = array[arraySize - 1];
   ArrayResize(array, arraySize - 1, ARRAY_RESERVE_SIZE);
}

Esto es para un array unidimensional. Las matrices bidimensionales y más grandes son en realidad matrices unidimensionales. Un array unidimensional puede representarse lógicamente como un array N-dimensional. Es decir, de hecho, una matriz unidimensional es siempre suficiente.

 
Alexey Viktorov:

¿Por qué? Hazlo como una clase elemental.

Algo así como...

Está escrito sobre la marcha, así que disculpen las imprecisiones.

¿Has intentado compilarlo?

 
Ilya Malev:

¿Has probado a compilar esto?

Todavía no han descubierto cómo hacer el compilador directamente en el sitio del foro.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

¿Cómo eliminar un elemento de una matriz (unidimensional y bidimensional)?

Alexey Viktorov, 2018.12.22 21:25

¿Por qué? Hazlo como una clase elemental.

Algo así como.

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

Escrito "a mano", por lo que pido disculpas por posibles inexactitudes.