qee:
Где найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
https://docs.mql4.com/ru/array
Где найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
dmitriy писал (а):
qee:
Где найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
https://docs.mql4.com/ru/arrayГде найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
Интересуют примеры.
qee:
Где найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
Где найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
Краткий обзор здесь - 'Обзор статей Rosh'а: эксперты в MetaTrader 4' . А так? действительно, много чего в CodeBase . везде, где требуется обрабатывать единообразно большие объемы информации.
Rosh писал (а):
Краткий обзор здесь - 'Обзор статей Rosh'а: эксперты в MetaTrader 4' . А так? действительно, много чего в CodeBase . везде, где требуется обрабатывать единообразно большие объемы информации.
qee:
Где найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
Где найти статьи по работе с массивами?
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.
Краткий обзор здесь - 'Обзор статей Rosh'а: эксперты в MetaTrader 4' . А так? действительно, много чего в CodeBase . везде, где требуется обрабатывать единообразно большие объемы информации.
В указанной ссылке, нет самих статей.
А проблема такая: требуется создать массив произвольной размерности с элементами равными нулю.
Создать массив произвольной размерности нельзя. Если массив
не инициализирован, то и присвить значения его элементам нельзя.
Смотри https://docs.mql4.com/ru/array
К сожалению, до конца ссылки на форуме Альпари не попрпавили после ребрендинга, вот эта ведет на первую страницу - http://www.alpari-idc.ru/ru/experts/articles/
Смотри https://docs.mql4.com/ru/array
К сожалению, до конца ссылки на форуме Альпари не попрпавили после ребрендинга, вот эта ведет на первую страницу - http://www.alpari-idc.ru/ru/experts/articles/
А проблема такая: требуется создать массив произвольной размерности с элементами равными нулю.
- Допускаются не более чем четырехмерные массивы. ©Отсюда
- Если размерность от 1 до 4-х - видимо, объявлять все возможные
варианты. Что-то типа:
//объявление double Arr1[],Arr2[][],Arr3[][][],Arr4[][][][]; //использование switch (proizvolnaya_razmernost) { case 1: //работаем с Arr1; break; case 2: //работаем с Arr2; break; case 3: //работаем с Arr3; break; case 4: //работаем с Arr4; break; default: Print("Ничего себе - произвольная размерность!"); }
- Обнулить все элементы - применить ArrayInitialize к каждой нижней размерности массива. Только перед этим - ArrayResize.
Rosh писал (а):
Создать массив произвольной размерности нельзя. Если массив не инициализирован, то и присвить значения его элементам нельзя.
Смотри https://docs.mql4.com/ru/array
К сожалению, до конца ссылки на форуме Альпари не попрпавили после ребрендинга, вот эта ведет на первую страницу - http://www.alpari-idc.ru/ru/experts/articles/
Создать массив произвольной размерности нельзя. Если массив не инициализирован, то и присвить значения его элементам нельзя.
Смотри https://docs.mql4.com/ru/array
К сожалению, до конца ссылки на форуме Альпари не попрпавили после ребрендинга, вот эта ведет на первую страницу - http://www.alpari-idc.ru/ru/experts/articles/
За ссылку спасибо - работает.
А если мы узнаем размер массива, как обнулить все его элементы?
Читаем документацию. Чтобы обнулить все элементы массива, необязательно
знать его размер.
Есть такая функция ArrayInitialize
Если вычислять индексы явно, можно создать массив произвольной размерности, при этом он будет храниться в памяти как одномерный. Важно соблюдать один и тот же порядок следования размерностей массива на протяжении всей программы.
Например, пусть 0 <= i < L, 0 <= j < M, 0 <= k < N. Тогда:
1-dim: p = i; 0 <= p < L : (псевдо)одномерный массив;
2-dim: p = i + j * L; 0 <= p < L * M : псевдодвумерный массив;
3-dim: p = i + j * L + k * L * M; 0 <= p < L * M * N : псевдотрехмерный массив и т. д.
Для массива более высокой размерности правило легко обобщается по индукции. Доступ можно организовать с использованием вложенных циклов.
Например, пусть задан трехмерный массив Array3Dim[L][M][N]; 0 <= i < L, 0 <= j < M, 0 <= k < N. Обозначим p - индекс соответствующего одномерного массива Array1Dim[L*M*N]. Тогда:
...
for (i = 0; i < L; i++)
{
for (j = 0; j < M; j++)
{
for (k = 0; k < N; k++)
{
p = i + j * L + k * L * M;
// ToDo: Array1Dim[p] = some_value;
}
}
}
...
Инициализация:
...
dim_size = L * M * N;
ArrayResize(Array1Dim, dim_size);
ArrayInitialize(Array1Dim, init_value);
...
Примечание: если требуется явно учесть особую структуру массива (симметрию, ленточность, блочность, треугольность, разреженность и т. п.) и тем самым экономить память в случае очень больших массивов, правила вычисления индекса могут сильно усложниться.
Например, пусть 0 <= i < L, 0 <= j < M, 0 <= k < N. Тогда:
1-dim: p = i; 0 <= p < L : (псевдо)одномерный массив;
2-dim: p = i + j * L; 0 <= p < L * M : псевдодвумерный массив;
3-dim: p = i + j * L + k * L * M; 0 <= p < L * M * N : псевдотрехмерный массив и т. д.
Для массива более высокой размерности правило легко обобщается по индукции. Доступ можно организовать с использованием вложенных циклов.
Например, пусть задан трехмерный массив Array3Dim[L][M][N]; 0 <= i < L, 0 <= j < M, 0 <= k < N. Обозначим p - индекс соответствующего одномерного массива Array1Dim[L*M*N]. Тогда:
...
for (i = 0; i < L; i++)
{
for (j = 0; j < M; j++)
{
for (k = 0; k < N; k++)
{
p = i + j * L + k * L * M;
// ToDo: Array1Dim[p] = some_value;
}
}
}
...
Инициализация:
...
dim_size = L * M * N;
ArrayResize(Array1Dim, dim_size);
ArrayInitialize(Array1Dim, init_value);
...
Примечание: если требуется явно учесть особую структуру массива (симметрию, ленточность, блочность, треугольность, разреженность и т. п.) и тем самым экономить память в случае очень больших массивов, правила вычисления индекса могут сильно усложниться.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Rosh кажется что-то писал на эту тему, но найти не могу.
Всем спасибо.