Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
да, я знаю, и привел код который не вызывает ошибку при выполнении, а зацикливает скрипт
у вас Print последний не выводится?
или предпоследний?
а вызов последней экспоненты не зависает?
алгоритм до какой строчки доходит?
принты везде расставляли?
да не выводится
да не выводится
повторю вопрос - у вас для 2/3/8 расчитывается экспонента?
и еще странно выглядит
1071644672
оно откуда ?сделал так:
в журнале:
если закоментировать: // if(i3==2 && i2==3 && i1==8) Print("неправильный вызов exp!!!!");
опять будет бесконечный цикл :)
если закоментировать: // if(i3==2 && i2==3 && i1==8) Print("неправильный вызов exp!!!!");
опять будет бесконечный цикл :)
i1 после окончания цикла равен 7, хотя максимальный индекс третьей размерности - 6. По идее, должен быть out of range, но если нет, то вполне возможно, что строчка
может перезаписать значение например, i2. Но в таком случае это ошибка в mql-компиляторе.
Можно вынести, например, определение массива в глобальные переменные - тогда поведение вышеприведённого кода должно измениться.
опять будет бесконечный цикл :)
думаю что ошибка все таки е в принте как таковом.
выясняйте что имеется на строчках перед ним. так как последняя экспонента выполнятся не должна. индекс превышает
думаю чтоб проблема таки у вас в коде.
и еще странно выглядит
1071644672
оно откуда ?приатачил, в таком виде скрипт уходит в бесконечный цикл
у меня Zero Devide хоть с принтом, хоть без него, на
А вообще i1 принимает неправильное значение. Хотя на обращение out[][][7] - должен быть out of range. Видимо компилятор считает ограничения исходя из перемножения всех размерностей (3 * 7 * 7 = 147), а не по каждой. Ибо, если i1 присвоить 8 - всё-равно Print выводит какие-то значения. Однозначно, ошибка компилятора при проверке границ массива.Видимо компилятор считает ограничения исходя из перемножения всех размерностей (3 * 7 * 7 = 147), а не по каждой. Ибо, если i1 присвоить 8 - всё-равно Print выводит какие-то значения. Однозначно, ошибка компилятора при проверке границ массива.
Out of range выдаёт не компилятор. Это Runtime ошибка.
Исполнительная система тупо вычислила смещение и если в вычислении участвовали неправильные индексы, но при этом вы не вышли за пределы массива, то ничего и не произойдёт. Если же индексы проверять по-умному, каждый в отдельности, тогда получим конкретные тормоза при исполнении