Что такое "перебор массива по диагонали"?
Dmitry Fedoseev:
Что такое "перебор массива по диагонали"?
Что такое "перебор массива по диагонали"?
перебор элементов должен осуществляться в таком виде.
1 2 4 7
3 5 8 11
6 9 12 14
10 13 15 16
или
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
3 5 8 11
6 9 12 14
10 13 15 16
или
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
Если размер массива постоянный, то создать дополнительный массив, в ините заполнить его индексами.
Dmitry Fedoseev:
Если размер массива постоянный, то создать дополнительный массив, в ините заполнить его индексами.
Если размер массива постоянный, то создать дополнительный массив, в ините заполнить его индексами.
Это вы о чем?
Задача, перебрать двумерный массив показанным ранее способом(где целые числа это направление перебора).
По этой диагонали?
Top2n:
Это вы о чем?
Об упрощении и ускорении сего действа в случае, когда массив имеет постоянный размер.
Это вы о чем?
Evgeny Belyaev:
Нет. Массив двухмерный, но перебирать его надо в том порядке как стоят числа: один элемент из левого верхнего угла, потом два (0-1 и 1-0), им т.д.
По этой диагонали?
Dmitry Fedoseev:
Об упрощении и ускорении сего действа в случае, когда массив имеет постоянный размер.
И все же я не понял, как может дополнительный массив помочь.
Об упрощении и ускорении сего действа в случае, когда массив имеет постоянный размер.
/*
1 2 3
4 5 6
7 8 9
*/
int m[9][2]={{0,0},{0,1},{1,0},{0,2},{1,1},{2,0},{1,2},{2,1},{2,2}};
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int r=ArrayRange(m,0);
Alert("---");
for(int i=0;i<r;i++){
Alert(a[m[i][0]][m[i][1]]);
}
1 2 3
4 5 6
7 8 9
*/
int m[9][2]={{0,0},{0,1},{1,0},{0,2},{1,1},{2,0},{1,2},{2,1},{2,2}};
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int r=ArrayRange(m,0);
Alert("---");
for(int i=0;i<r;i++){
Alert(a[m[i][0]][m[i][1]]);
}
Dmitry Fedoseev:
Все равно ни хрена не понял, но это я тупой) у меня массив большого объема, присваивать индексы не вижу смысла
/*
1 2 3
4 5 6
7 8 9
*/
int m[9][2]={{0,0},{0,1},{1,0},{0,2},{1,1},{2,0},{1,2},{2,1},{2,2}};
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int r=ArrayRange(m,0);
Alert("---");
for(int i=0;i<r;i++){
Alert(a[m[i][0]][m[i][1]]);
}
1 2 3
4 5 6
7 8 9
*/
int m[9][2]={{0,0},{0,1},{1,0},{0,2},{1,1},{2,0},{1,2},{2,1},{2,2}};
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int r=ArrayRange(m,0);
Alert("---");
for(int i=0;i<r;i++){
Alert(a[m[i][0]][m[i][1]]);
}
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
*дополнено
Переборка массива, как реализовать грамотнее?
3 5 8 11
6 9 12 14
10 13 15 16
или
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
{
int countp=0;
for(int p=1; p<ARRAY_SIZE_X; p++) // отбор по периодам
{
countp++;
for(int b=1; b<countp; b++) //отбор по барам
{
if(arrayZ[2][p-b][b]>0)
{
}
}
}
}
void MassDevZ()//вторая половина массива
{
int countp=0;
for(int b=2; b<ARRAY_SIZE_Y; b++) // отбор по периодам
{
int coubtb=-1;
countp++;
for(int p=ARRAY_SIZE_X-2; p>countp; p--) //отбор по барам
{
coubtb++;
if(arrayZ[2][p][b+coubtb]>0)
{
}
}
}
}
Что то не красиво, возможно и не совсем работа способна, может кто поделится опытом...