2015-10-30 3 views
0

Я хочу показать направления пути с символами «>», «<», «v», «^». И все же символы перестают отображаться прямо в первом повороте. Что случилось с моим кодом?лабиринт с указанным направлением

bool find_path_with_direction(int row, int col, char maze[ROW][COL]) 

{ 
    if(row > ROW-1 || col > COL-1) //out of boundary 
     return false; 

    if(maze[row][col]=='d') // destination 
    return true; 

    if(maze[row][col]!= ' '&& maze[row][col]!= 's') //obstacle 
    return false; 


    if(find_path_with_direction(row, col+1, maze)==true) 
    maze[row][col]= '>'; 
    return true; 

    if(find_path_with_direction(row, col-1, maze)==true) 
    maze[row][col]= '<'; 
    return true; 

    if(find_path_with_direction(row+1, col, maze)==true) 
    maze[row][col]= 'v'; 
    return true; 

    if(find_path_with_direction(row-1, col, maze)==true) 
    maze[row][col]= '^'; 
    return true; 

    maze[row][col]=' '; 

    return false; 
} 
+1

Вы должны использовать '{' '}' 'if (condition) {// code}' – Himanshu

+0

@Himanshu Вы можете опустить их, когда в if есть только одна строка, например, в первых трех условиях, но вы правы в отношении других. – Kotshi

+0

@ Kotshi, да для одной строки это будет хорошо, но для нескольких утверждений вам придется использовать скобки. – Himanshu

ответ

2

У вас возникли проблемы в вашем состоянии if.

Вы не используете { и }, что дает свою проблему.

Использование открытие и закрытие скобка {}
, например, написать if состояние, как это.

if(find_path_with_direction(row, col+1, maze)==true) 
{ 
    maze[row][col]= '>'; 
    return true; 
} 

если вы пишете такой код.

if(find_path_with_direction(row, col+1, maze)==true) 
maze[row][col]= '>'; 
return true; 

Здесь никакого условия дела не true или false, return true; всегда будут выполняться.

+0

Вы указали на ошибку, с которой столкнулся OP, но он сказал, что проблема возникает из: 'if (лабиринт [строка] [col]! = '' && лабиринт [строка] [col]! = 's') // препятствие return false; ' – Kotshi