저는 몇 시간 동안이 프로그램의 일환으로 일해 왔습니다. 나는 한 시간 넘게 나를 곤란하게 만든 몇 줄의 코드를 가지고있다. 그것은 단지 이해가되지 않습니다. 나는 선을 반복해서 읽고 내 머리 속에서 생각해야 할 것을 생각하지만, 그렇게하지는 않는다! 아마 내가 간과하고있는 어리석은 실수 일 것이다. (보통 나에게 일어난다.) 또는 수면 부족으로부터/지난 몇 시간 동안 끊임없이 노력하고있을 수있다.이 코드 순서가 제대로 작동하지 않는 이유는 무엇입니까?
프로그램이 상당히 길지만 문제가있는 코드는 몇 줄 밖에 없으므로 필요할 경우 전체를 게시합니다. (각 긴 79 개 문자가되고, 19) 내가 수동으로 설정 문자열 가득, 하나의 벡터가
:
이 좋아, 그래서 여기에이 일을해야 무엇을 아래로 빠른 실행됩니다. 이 1 차원 벡터는 2 차원 벡터로 취급됩니다. 기본으로 유지하려고합니다. 따라서이 문자열 벡터는 줄당 1 문자열로 표시되는 경우 본질적으로 '.'의 사각형 섹션이있는 격자를 만듭니다. 직사각형 섹션을 연결하는 '#'경로가 있습니다. 함수에 전달 된 x와 y 좌표를 얻어야합니다. 그것은 2 차원 벡터처럼 반복하고 위치를 찾습니다. 그 위치의 문자가 '.'가 아닌지 확인합니다. 또는 '#'else이면 char을 X로 변경하여 위치를 표시합니다. 나는 'x'의 위치 인 유효한 x, y 좌표로 테스트를 설정했다. 문제는 프로그램이 실행될 때 vLevel [i] [j] = '.'의 값을 표시합니다. 그러나 어떤 이유로 든 함수가 4 번 더 호출되고 else 문을 넣는 else 문으로 이동하지 않습니다. 그리드가 어떻게 보이는지 보여줍니다.
void markPosition(vector<string> & vLevel, int x, int y){
cout << "x: " << x <<endl;
cout << "y: " << y <<endl;
bool doubleCheck = true; //extra bool I added for testing purposes
for(int i = 0; i < vLevel.size(); i++){
for(int j = 0; j < vLevel[i].size(); j++){
//displays if x and/or y are out of range
if (doubleCheck){
if ((x < 0) || (x > vLevel[i].size())){
cout << "X is out of range!" << endl;
doubleCheck = false;
}
if ((y < 0) || (y > vLevel.size())){
cout << "Y is out of range!" << endl;
doubleCheck = false;
}
}
else {
return;
}
if ((j == x) && (i == y)){
//////THIS IS THE PROBLEM LOL
cout << "match found::: " << vLevel[i][j] << endl;
if ((vLevel[i][j] != '.') || (vLevel[i][j] != '#')){
cout << "Located in the blankness" << endl;
return;
}
else {
cout << "I don't get reached!!??" << endl;
vLevel[i][j] = 'X';
markPosition(vLevel,i-1,j);
markPosition(vLevel,i+1,j);
markPosition(vLevel,i,j+1);
markPosition(vLevel,i,j-1);
}
}
}
}
}
간격이있어 :
.......
....... .......
.......##....... ..........................
....... ....... ..........................
....... .......................... ..........
....... ..........................#####..........
.......................... ..........
.......................... #
.......................... #
# #
# #
........ # ............ .......
........ # ............ .......
........ # ............ .... .......
........###############............ .... .......
........ ............####....
........ ............ ....
는 Heres는 코드의 부분은 내가 처리 해요 : 백색 공간에 공백이 있습니다 .. 각 라인은 벡터의 문자열입니다 그것을 붙여 넣을 때 엉망이되어서, 나는 그것을 조금 닦으려고 노력했다. 나는 왜 다른 사람을 건너 뛰지 않는지 모르겠다. 내가 말했듯이, 일단 이것이 해결되면 나는 바보가 될 것이라고 확신한다. 나는 수면을 필요로한다.
자세한 정보가 필요하면 알려주세요. 고마워요! 에서
드 모르 강의 법칙을 잊고 또 다른 프로그래머. :) – Barmar
담비가 너무 느립니다. 내 휴대 전화에서 그것을 읽지 만, 적절하게 자르고 붙이기 위해 컴퓨터에 로그인해야했습니다. 당신을 위해 빠른 선생님 +1. –
나는 그것을 얻지 못한다 – ModdedLife