2014-12-04 2 views
0

함수 자체에서 "check_row"를 실행하면 배열 "sudoku_temp"를 전달하는 방식에 문제가 있습니다. 잘못하고있어. 내가 놓친 게 있니? 나는 자체 내에서 기능을 호출 할 때배열을 재귀 함수로 전달하는 데 문제가 있습니다. C++

int check_row(int j_position, int generated_value, int sudoku_temp[][9]){ 
for (int i_position = 0; i_position < 9; i_position++) 
{ 
    if (generated_value == sudoku_temp[i_position][j_position]) 
    { 
     generated_value = generate_number(); 
     check_row(j_position, generated_value, sudoku_temp[][j_position]); 
    } 
    else 
     return generated_value; 

} 

}

명확히하려면 문제입니다. 감사.

+0

무슨 문제입니까? 컴파일 오류 인 경우 여기에 붙여 넣으십시오. – Kelm

+0

sudoku_temp [] [j_position] 오류 : 표현식이 필요합니다. – Eskimu

+0

희망 사항 : 조금 도움이 되길 바랍니다. http://stackoverflow.com/questions/8767166/passing-a-2d-array-to-ac-function – Han

답변

0

배열에서 값을 추출하려면 사용자가 원하는 것처럼 빈 대괄호를 사용할 수 없습니다. 반면에 함수 프로토 타입은 비슷해 보이며 완벽하게 괜찮습니다. 왜?

int sudoku_temp[][9] // A 2D array of integers second dimension of which is of size 9 

또는 다른 말로

, 크기 9. 우리는 배열이 정말 얼마나 큰 컴파일러를 말하는되지 않고 그대로 우리가이 경우에없는의 배열 (알 수없는 크기의) 배열 단순히 우리에게 논쟁으로 주어졌습니다.

반면에 요소를 액세스 할 때는 간단한 이유 때문에 빈 대괄호를 사용할 수 없습니다. 요소에 액세스하려고하며 컴파일러는 어느 것을 알고 있어야합니다. 체이스 커팅 - 빈 []을 제거하면 문제가 해결됩니다.

+0

내 문제는 내가 check_row (8 행)에 배열을 전달하려고 시도하는 것이므로 어떻게 처리해야할지 모르겠다 고 생각합니다. 전달하는 배열은 주요 함수에서 가져온 것이므로이 check_row 함수에있을 때 호출하는 방법을 모른다. – Eskimu

+0

실제로 코드를 다시 살펴 보았습니다. 배열에 대한 온라인 강의를 해보 아야합니다. C에서 처음에는 이해하기가 쉽지 않습니다. 특히 다차원의 것들입니다. – Kelm

+0

도움을 주셔서 감사합니다. – Eskimu

0

은 재귀에서 인수가 다를 수 있기 때문에 9.과 같은 고정 길이 대신 변수를 사용합니다.

int check_row(int j_position, int generated_value, int sudoku_temp[][n]) 
{ 
    for (int i_position = 0; i_position < n; i_position++) 
    { 
     if (generated_value == sudoku_temp[i_position][j_position]) 
     { 
      generated_value = generate_number(); 
      check_row(j_position, generated_value, sudoku_temp[][j_position]); 
     } 
     else 
      return generated_value; 

    } 
} 
+0

문제가 있습니다. 실제로 함수 내부의 함수를 사용하고 있습니다. 혼란스러운 점이 유감입니다. – Eskimu

관련 문제