Comment supprimer un élément d'un tableau (unidimensionnel bidimensionnel) ? - page 2

 
Seric29:

comment fonctionne la fonction

Il n'y a pas de description dans le manuel où lire à ce sujet ?

Lisez-vous ce fil ? Admin a répondu - description à venir

 
Seric29:

Je ne réduis pas la taille du tableau mais j'en retire un élément...

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

Cela ne marcherait-il pas ?

 
Ilya Malev:

Le camarade a écrit : unidimensionnel et bidimensionnel. Votre fonction ne fonctionne pas avec les deux dimensions. Montrez-moi comment faire fonctionner une fonction avec le même nom pour les deux :)

Je n'ai rien vu à propos de bidimensionnel. Mais le bidimensionnel en lui-même a également copié, seulement des valeurs légèrement différentes à partir de quel index pour écrire à la reprise de tableau et à partir de quel index pour lire de la source. En principe, le problème peut être résolu pour les tableaux à 3-4 dimensions autorisés dans mql

 
Seric29:

Je ne réduis pas la taille du tableau, mais j'en retire un élément, ce qui est différent. Je comprends que votre fonction a supprimé la valeur1.13612, cela est spécifié dans la lignedellArrayElement(3, array) ; c'est-à-dire que le 3ème élément est supprimé du tableau, n'est-ce pas ? Quelle est la vitesse de ces expériences, combien de temps chargent-elles le programme ?

Mais si la condition est

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Comment supprimer un élément d'un tableau (unidimensionnel bidimensionnel) ?

Seric29, 2018.12.21 23:50

Comment supprimer un élément d'un tableau ? Dois-je connaître le nombre d'éléments qu'il contient ?

alors naturellement la taille du tableau devrait être réduite. N'est-ce pas ?

Oui, dans l'exemple, c'est le troisième élément du tableau qui a été supprimé. Les vitesses et certaines parties du corps sont mesurées dans d'autres branches. Dans ce cas, la vitesse est tout à fait normale. Vous devez effectuer plusieurs séries de plusieurs centaines de suppressions pour obtenir des valeurs de vitesse approximatives. Pourquoi voudrais-je faire ça ?

 
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:

Je n'ai rien vu à propos du bidimensionnel. Mais le bidimensionnel est également copié en lui-même, avec seulement des valeurs légèrement différentes de l'index à écrire dans le tableau et de l'index à lire depuis la source. En principe, le problème peut être résolu pour les tableaux à 3-4 dimensions autorisés dans mql

Je suppose que c'est soluble en principe. Sauf qu'il ne semble pas pouvoir être résolu pour une fonction du même nom.

 
Ilya Malev:

Je suppose que c'est soluble en principe. Sauf qu'il ne semble pas pouvoir être résolu pour une fonction du même nom.

Pourquoi ? Faites-le comme une classe élémentaire.

Quelque chose comme

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[][])
 {
  // тело функции для двухмерного массива
 };

Il a été écrit "sur le vif" et je m'excuse donc pour les éventuelles inexactitudes.

 

Si l'ordre des éléments du tableau n'est pas important, cela se fait assez rapidement :

#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);
}

Ceci est pour un tableau à une dimension. Les tableaux à deux dimensions et plus sont en fait des tableaux à une dimension. Un tableau unidimensionnel peut logiquement être représenté comme un tableau à N dimensions. En fait, un tableau unidimensionnel est toujours suffisant.

 
Alexey Viktorov:

Pourquoi ? Faites-le comme une classe élémentaire.

Quelque chose comme...

C'est écrit à la volée, alors excusez-moi pour toute inexactitude.

Avez-vous essayé de le compiler ?

 
Ilya Malev:

Avez-vous essayé de le compiler ?

Ils n'ont pas encore trouvé le moyen de mettre le compilateur directement sur le site du forum.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Comment supprimer un élément d'un tableau (unidimensionnel et bidimensionnel) ?

Alexey Viktorov, 2018.12.22 21:25

Pourquoi ? Faites-le comme une classe élémentaire.

Quelque chose comme.

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[][])
 {
  // тело функции для двухмерного массива
 };

Écrit "à la main", veuillez donc vous excuser pour les éventuelles inexactitudes.