@mottoper

Почему цикл ведет себя столь странно?

Вообщем есть цикл в цикле, который манипулирует с двумерными матрицами:
for(int i = 0; i < x; ++i) {
		for(int j = 0; j < y; ++j) {
			int x1 = i, y1 = j;
			if(((abs(x1 - GO.x) == 1) || (abs(y1 - GO.y) == 1)) && *(desk+x1+y1))
				GOnbr[i][j] = abs(STAY.startX - x1) > abs(STAY.startY - y1) ? x-abs(STAY.startX - x1) : y-abs(STAY.startY - y1);
			else 
				GOnbr[i][j] = 0;
			if((i - STAY.x >= -1 && i - STAY.x <= 1) && (j - STAY.y >= -1 && j - STAY.y <= 1) && !(i - STAY.x == 0 && j - STAY.y == 0) && *(desk+i+j))
				STAYnbr[i][j] = 0;
			else 
				STAYnbr[i][j] = 1;
			GOnbr[i][j]*=STAYnbr[i][j];
			cout << j << ' ' << i << endl;
		}
	}

Извиняюсь за говноусловие во втором ифе, оно должно быть таким же как в первом, но оно ему тождественно.
Так вот, это вот почему-то выводит:
...
0 0
1 0
2 0
0 1
1 1
2 1
0 2
1 2
2 2
0 3
1 3
2 3
0 0
1 0
2 0
0 1
1 1
2 1
0 2
1 2
2 2
...

И так пока не остановишь. Помогите, пожалуйста. Пробовал двумя компиляторами: clang и gcc 4.8. OS X 9
  • Вопрос задан
  • 2275 просмотров
Пригласить эксперта
Ответы на вопрос 2
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Для такого кода надеюсь не повторяется?
#include <iostream>
int main()
{
	int x = 3;
	int y = 3;

	for(int i = 0; i < x; ++i) 
	{
			for(int j = 0; j < y; ++j) 
			{
				std::cout << j << ' ' << i << std::endl;
			}
	}
	return 0;
}

Если нет, попробуйте сделать минимальний компилируемый пример с багом.
Ответ написан
Комментировать
1kachan
@1kachan
мб полный исходник выложите
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы