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

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

Il existe une fonction, bien que personne ne l'ait vue (ni dans l'aide, ni sur le site web), mais elle existe.)


 
Ilya Malev:

Il existe une fonction, bien que personne ne l'ait vue (ni dans l'aide, ni sur le site web), mais elle existe.)

oh, une fonction secrète, et comment ça marche ?
 
Ilya Malev:

Il existe une fonction, bien que personne ne l'ait vue (ni dans l'aide, ni sur le site web), mais elle existe.)


Prochainement

 

Pour supprimer un seul élément, la fonction

void OnStart()
{
 double array[];
 CopyOpen(_Symbol, PERIOD_CURRENT, 0, 6, array);
 ArrayPrint(array);
 dellArrayElement(3, array);
 ArrayPrint(array);
}/*******************************************************************/

void dellArrayElement(int shift, double &arr[])
{
 int arrSize = ArraySize(arr);
 if(shift > arrSize)
  return;
 if(shift < arrSize)
 ArrayCopy(arr, arr, shift, shift+1);
 ArrayResize(arr, arrSize-1);
}

Résultat

2018.12.22 09:55:06.206 !00 (EURUSD,M15)        1.13588 1.13607 1.13588 1.13612 1.13586 1.13614
2018.12.22 09:55:06.206 !00 (EURUSD,M15)        1.13588 1.13607 1.13588 1.13586 1.13614

Vous pouvez ensuite convertir cette fonction en type bool, afin de pouvoir contrôler son exécution. En gros, si vous êtes intelligent et que vous pouvez contrôler les valeurs que vous lui envoyez, vous pouvez l'utiliser de toute façon...

N'oubliez pas que vous ne pouvez pas réduire la taille des tableaux statiques.

 
Alexey Viktorov:

Pour supprimer un seul élément, la fonction

Résultat

Vous pouvez ensuite convertir cette fonction en type bool, afin de pouvoir contrôler son exécution. En gros, si vous êtes intelligent et que vous pouvez contrôler les valeurs que vous lui envoyez, vous pouvez l'utiliser de toute façon...

N'oubliez pas que vous ne pouvez pas réduire la taille des tableaux statiques.

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 :)

 
Alexey Viktorov:

N'oubliez pas que les tableaux statiques ne peuvent pas être réduits en taille.

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

 
Aleksey Semenov:
oh, une fonction secrète, et comment ça marche ?

En C++, il existe de telles fonctions, vous branchez la bibliothèque et l'action est exécutée. Mais nous prenons en compte le fait que mql ne dispose pas de telles fonctions et que nous voulons utiliser des fonctions manuscrites.

 

J'ai trouvé cehttp://kvodo.ru/urok-7-2-massivyi-osnovnyie-operatsii.html (et aussi ce https://purecodecpp.com/archives/1935)

Supposons que l'on doive retirerle m-ième élément en nombre d'un tableauX composé den éléments. Pour cela, il suffit d'écrire (m+1)-ième élément à la place de l'élémentm, (m+2)-ième élément à la place de (m+1)-ième, et ainsi de suite,n-1 à la place de(n-2)et d'utiliser l'élémentn-1lorsque l'on travaille plus avant avec ce tableau:

cout<<"\n m="; cin>>m; //ввод номера элемента, подлежащего удалению
for (i=m; i<n-1; X[i+1],i++); //удаление m-го элемента
for (i=0; i<n-1; i++) cout<<X[i]<<"\t"; //вывод измененного массива
n--; //уменьшение количества элементов в массиве

Mais c'est avec le C++. Mais ici, nous avons besoin de connaître le nombre d'éléments stockés dans le tableau. Vous devez écrire une fonction qui lira les éléments au fur et à mesure qu'ils sont écrits.

 
Alexey Viktorov:

Pour supprimer un élément, cette fonction conviendra parfaitement.

Et si vous voulez supprimer, par exemple, non pas une valeur de prix mais une date d'un tableau, est-ce queCopyOpen fonctionnera avec les dates, puisque j'ai compris dans l'aide que cette fonction fonctionne avec les prix ?

 
Ilya Malev:

Il existe une fonction, bien que personne ne l'ait vue (ni dans l'aide, ni sur le site web), mais elle existe.)


Comment cela fonctionne-t-il ?

int ArrayRemove()

Il n'y a pas de description dans l'aide, où puis-je trouver des informations à ce sujet ?