В цикле при нулевой и последней итерации используй оператор "continue" (https://book.mql4.com/ru/operators/continue, https://www.mql5.com/ru/docs/basis/operators/continue).
rensbit >>:
В цикле при нулевой и последней итерации используй оператор "continue" (https://book.mql4.com/ru/operators/continue).
В цикле при нулевой и последней итерации используй оператор "continue" (https://book.mql4.com/ru/operators/continue).
Fast >>:
for(i=0; i<=6; i++){ if(i==0 || i==6){continue;} if(array[i]==1){Alert("Элемент массива "+i+" равен 1");} }
Fast писал(а) >>
Сам я пишу программу на mql5, но тут не столь важна разница в языках, так как задача алгоритма такая:
Есть некий 1мерный массив данных, например (0,0,0,0,0,0) мы имеем 6 элементов, мне нужно перебрать все возможные варианты изменения каждого элемента массива с 0 на 1. Нужно перебрать все уникальные значения массива, но не надо брать 1й и последний элементы, перебираем всегда от 2го до пред последнего, должны получиться вроде таких вариантов:
1. (0,0,0,0,0,0)
2. (0,1,0,0,0,0)
3. (0,1,1,0,0,0)
4. (0,1,0,1,0,0)
.......... .......... .
5. (0,1,1,1,1,0)
Вот что то сидел, думал и никак не додумался, сам я не прогреммер, а так… самоучка, поэтому не судите строго, если алгоритм простой, просто прошу помощи у тех кто знает как это решить.
Реализовать алгоритм, желательно используя циклы: while, do while, for. И чтобы была совместимость с mql5 но если что, я сам подредактирую.
* Дело еще в том, что количество элементов массива изменяется, и может достигать до 10-15 элементов, поэтому даже не знаю как все это реализовать.
** первый и последний элементы всегда равны 0, и их изменения не просчитываем.
Сам я пишу программу на mql5, но тут не столь важна разница в языках, так как задача алгоритма такая:
Есть некий 1мерный массив данных, например (0,0,0,0,0,0) мы имеем 6 элементов, мне нужно перебрать все возможные варианты изменения каждого элемента массива с 0 на 1. Нужно перебрать все уникальные значения массива, но не надо брать 1й и последний элементы, перебираем всегда от 2го до пред последнего, должны получиться вроде таких вариантов:
1. (0,0,0,0,0,0)
2. (0,1,0,0,0,0)
3. (0,1,1,0,0,0)
4. (0,1,0,1,0,0)
.......... .......... .
5. (0,1,1,1,1,0)
Вот что то сидел, думал и никак не додумался, сам я не прогреммер, а так… самоучка, поэтому не судите строго, если алгоритм простой, просто прошу помощи у тех кто знает как это решить.
Реализовать алгоритм, желательно используя циклы: while, do while, for. И чтобы была совместимость с mql5 но если что, я сам подредактирую.
* Дело еще в том, что количество элементов массива изменяется, и может достигать до 10-15 элементов, поэтому даже не знаю как все это реализовать.
** первый и последний элементы всегда равны 0, и их изменения не просчитываем.
Если я правильно понял Вашу проблему, попробуйте такой код:
int i,i1; int arr[6]; for( i=1; i<63; i++ ) { for( i1=0; i1<6; i1++ ) { arr[i1] = ( i >> i1 ) & 1; } // массив заполнен, проверим это Print("arr: ",arr[5],arr[4],arr[3],arr[2],arr[1],arr[0]); }
тоесть в начале у нас массив равен:
(0,0,0,0,0)
Нужно поочередно менять элементы с 0 на 1, но не пропуская всех возможных вариаций.
ну например:
(0,0,0,1,0)
(0,0,1,1,0)
(0,0,1,0,0)
(0,1,0,1,0)
(0,1,1,1,0)
(0,1,0,0,0)
Это все допустимые варианты для массива в 5 элементов, помним что 1й и последний мы не меняем. Вот нужен код именно изменения поочередно всех элементов массива, перебирая все возможные варианты, но без повторений.
*Для массива в 5 элементов все просто, но если массив состоит из 15?..... всю голову себе уже поломал.... ну как это сделать....
Нужно найти все варианты значений из заданного диапазона в массиве произвольного размера?
Fast писал(а) >>
тоесть в начале у нас массив равен:
(0,0,0,0,0)
Нужно поочередно менять элементы с 0 на 1, но не пропуская всех возможных вариаций.
ну например:
(0,0,0,1,0)
(0,0,1,1,0)
(0,0,1,0,0)
(0,1,0,1,0)
(0,1,1,1,0)
(0,1,0,0,0)
Это все допустимые варианты для массива в 5 элементов, помним что 1й и последний мы не меняем. Вот нужен код именно изменения поочередно всех элементов массива, перебирая все возможные варианты, но без повторений.
*Для массива в 5 элементов все просто, но если массив состоит из 15?..... всю голову себе уже поломал.... ну как это сделать....
тоесть в начале у нас массив равен:
(0,0,0,0,0)
Нужно поочередно менять элементы с 0 на 1, но не пропуская всех возможных вариаций.
ну например:
(0,0,0,1,0)
(0,0,1,1,0)
(0,0,1,0,0)
(0,1,0,1,0)
(0,1,1,1,0)
(0,1,0,0,0)
Это все допустимые варианты для массива в 5 элементов, помним что 1й и последний мы не меняем. Вот нужен код именно изменения поочередно всех элементов массива, перебирая все возможные варианты, но без повторений.
*Для массива в 5 элементов все просто, но если массив состоит из 15?..... всю голову себе уже поломал.... ну как это сделать....
int i,i1; int arr[6]; for( i=1; i<16; i++ ) { for( i1=0; i1<4; i1++ ) { arr[i1+1] = ( i >> i1 ) & 1; } arr[0] = 0; arr[5] = 0; // массив заполнен, проверим это Print("arr: ",arr[5],arr[4],arr[3],arr[2],arr[1],arr[0]); }
просто я не совсем понял что вы тут делаете....
тут i сдвигается вправо на i1 двоичных разрядов (битов) и из результата извлекается младший бит.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть некий 1мерный массив данных, например (0,0,0,0,0,0) мы имеем 6 элементов, мне нужно перебрать все возможные варианты изменения каждого элемента массива с 0 на 1. Нужно перебрать все уникальные значения массива, но не надо брать 1й и последний элементы, перебираем всегда от 2го до пред последнего, должны получиться вроде таких вариантов:
1. (0,0,0,0,0,0)
2. (0,1,0,0,0,0)
3. (0,1,1,0,0,0)
4. (0,1,0,1,0,0)
.......... .......... .
5. (0,1,1,1,1,0)
Вот что то сидел, думал и никак не додумался, сам я не прогреммер, а так… самоучка, поэтому не судите строго, если алгоритм простой, просто прошу помощи у тех кто знает как это решить.
Реализовать алгоритм, желательно используя циклы: while, do while, for. И чтобы была совместимость с mql5 но если что, я сам подредактирую.
* Дело еще в том, что количество элементов массива изменяется, и может достигать до 10-15 элементов, поэтому даже не знаю как все это реализовать.
** первый и последний элементы всегда равны 0, и их изменения не просчитываем.