for(k=0;k<=n-2;k++)for(i=k+1;i<=n-1;i++) { if(!B[k][k]) { for(i1=0;i<=n-1;i++) { w[i1]=B[i1][k]; B[i1][k]=B[i1][k+1]; B[i1][k+1]=w[i1]; } cp++; } Print(__FUNCTION__+": i=",i); c=1.0*B[i][k]/B[k][k]; for(j=0;j<=n-1;j++) B[i][j]-=B[k][j]*c; }
2019.03.31 00:07:28.689 (GBPUSD,H1) array out of range in 'SSA.mqh' (147,14)
for(i1=0;i1<=n-1;i1++) { w[i1]=B[i1][k]; B[i1][k]=B[i1][k+1]; B[i1][k+1]=w[i1]; }
must be i1 everywhere in for() ?
leonerd:
must be i1 everywhere in for() ?
Сам дурак.
Алексей Тарабанов:
Сам дурак.
Горячая линия Минздрава России:8 800 550 99 03
Да там ошибка на ошибке. Выходы за пределы массива и деление на 0.
И я не знаю, как править, так как вообще не понимаю о чем эта библиотека...
Вот этот цикл например:
for(k=0;k<=n-2;k++)for(i=k+1;i<=n-1;i++) { if(!B[k][k]) { for(i1=0;i<=n-1;i++) { w[i1]=B[i1][k]; B[i1][k]=B[i1][k+1]; B[i1][k+1]=w[i1]; } cp++; } c=1.0*B[i][k]/B[k][k]; for(j=0;j<=n-1;j++) B[i][j]-=B[k][j]*c; }Если доходит до самого внутреннего цикла for (а оно доходит, т.к. B[k][k] равно нулю), то i уже выходит за пределы ограничения внешнего цикла, то есть i становится больше n-1. Ну и дальше при доступе к B[i] получаем выход за пределы массива, т.к. по удивительному совпадению его размер и равен n.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
FullSSA:
Перерисовывающийся осциллятор, построенный на основе библиотеки функций сингулярного преобразования SSA.mqh
Рис.1 Индикатор FullSSA
Автор: Nikolay Kositsin