Подскажите пожалуйста как правильно определить размерность массива, если не известно изначально, сколько в массиве будет строк. Знаю, что можно через ArrayResize, но как это сделать правильно?
Например в следующей функции при определении размерности массива BCC_J[MaxI,8]. Я взял размерность MaxI, а на самом деле размер массива получился меньше.
int m; m=ArrayRange(Matr, 0);// количество строк int n; n=ArrayRange(Matr, 1);// количество столбцов
Prival, спасибо!
Правильно ли я понял, что теперь моя функция должна выглядеть так:
int ReadArrayData_Buy() { Comment("Читаем данные из массива Buy"); for (i=0; i<MaxI; i++) { Bar_1=BCC[i,1]; Bar_2=BCC[i,2]; Bar_3=BCC[i,3]; P_L=BCC[i,4]; P=0; L=0; Sum=1; if (P_L==1) P=1; if (P_L==-1) L=1; for (j=0; j<MaxI; j++) { if (i==j) continue; if (Bar_1==BCC[j,1] && Bar_2==BCC[j,2] && Bar_3==BCC[j,3] && BCC[j,4]==1) {Sum++; P++;} if (Bar_1==BCC[j,1] && Bar_2==BCC[j,2] && Bar_3==BCC[j,3] && BCC[j,4]==-1) {Sum++; L++;} } int m; m=ArrayRange(BCC_J,0);// количество строк ArrayResize(BCC_J,m++); // новое количество строк BCC_J[i,0]=i; BCC_J[i,1]=Bar_1; BCC_J[i,2]=Bar_2; BCC_J[i,3]=Bar_3; BCC_J[i,4]=P_L; BCC_J[i,5]=Sum; BCC_J[i,6]=P; BCC_J[i,7]=L; BCC_J[i,8]=MathRound(P*100/Sum); Comment("Читаем Buy данные из массива и сравниваем с данными. Завершено: "+DoubleToStr(i*100.0/MaxI, 1)+"%"); } Comment("Завершено ReadArrayData_Buy"); return(0); }Типа сосчитал количество строк в массиве и перед записью новой строки, добавил одну строку.
Насколько я знаю нельзя изменить количество строк в массиве. Оно задаётся жестко при объявлении.
ArrayResize меняет размер только первого измерения.
int m=ArrayRange(Matr,0);// количество элементов в строке (первое измерение) int n=ArrayRange(Matr,1);// количество строк (второе измерение)
Насколько я знаю нельзя изменить количество строк в массиве. Оно задаётся жестко при объявлении.
ArrayResize меняет размер только первого измерения.
А может наоборот, нельзя изменить количество столбцов? Вот как выглядит пример использования изменения размерности. Мне тоже нужно изменить ту размерность.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста как правильно определить размерность массива, если не известно изначально, сколько в массиве будет строк. Знаю, что можно через ArrayResize, но как это сделать правильно?
Например в следующей функции при определении размерности массива BCC_J[MaxI,8]. Я взял размерность MaxI, а на самом деле размер массива получился меньше.