- Если к массиву применить ArrayResize, то что произойдёт с уже имеющимися значениями элементов массива?
- iStdDevOnArray, iMAOnArray и т п используют только одномерные массивы?
- Как передать второе измерение двумерного массива по ссылке в функцию?
Есть такая функция, хотя никто её не видел (ни в справке ни на сайте), но она есть )
Есть такая функция, хотя никто её не видел (ни в справке ни на сайте), но она есть )
Есть такая функция, хотя никто её не видел (ни в справке ни на сайте), но она есть )
Скоро появится
Для удаления одного элемента вполне подойдёт такая функция
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); }
Результат
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
Дальше можно самостоятельно преобразовать эту функцию в тип bool чтобы можно было контролировать факт выполнения. А в принципе, если руки не кривые и можете контролировать какие значения в неё отправляете, можно и так пользовать...
Не следует забывать, что статическим массивам уменьшить размер нельзя.
Для удаления одного элемента вполне подойдёт такая функция
Результат
Дальше можно самостоятельно преобразовать эту функцию в тип bool чтобы можно было контролировать факт выполнения. А в принципе, если руки не кривые и можете контролировать какие значения в неё отправляете, можно и так пользовать...
Не следует забывать, что статическим массивам уменьшить размер нельзя.
У товарища написано: одномерного и двумерного. Ваша функция с двумерным не работает. Покажите, как сделать, чтобы и с тем и с тем работала функция с одинаковым названием :)
Я не уменьшаю размер массива а удаляю из него элемент это разные вещи. Я так понимаю по вашей функции удалено значение 1.13612, оно указано в строке dellArrayElement(3, array); массива т. е. 3ий элемент удалён из массива я правильно понял? Какая скорости работы подобных экспериментов сильно грузят программу?
о, секретная функция, и как, работает?
На с++ такие функции есть, подключаешь библиотеку и выполняется данное действие. Но учитывается тот факт что на mql таких функций нет и хочется использовать рукописные функции.
Я нашёл вот это http://kvodo.ru/urok-7-2-massivyi-osnovnyie-operatsii.html (и ещё вот это https://purecodecpp.com/archives/1935)
Пусть нужно удалить из массива X, состоящего из n элементов, m-й по номеру элемент. Для этого достаточно записать (m+1)-й элемент на место элемента m, (m+2)-й на место (m+1)-го и т.д., n-1 на место(n-2) и при дальнейшей работе с этим массивом использовать n-1 элемент:
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--; //уменьшение количества элементов в массиве
Но это с с++. Но тут нужно знать количество элементов хранящееся в массиве. Нужно писать функцию которая будет по мере записи считать элементы.
Есть такая функция, хотя никто её не видел (ни в справке ни на сайте), но она есть )
как работает функция
int ArrayRemove()
Описания в справочнике про неё нет где про неё почитать?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования