2016-06-14 2 views
-2

난수가 채워진 2D-array을 만들었습니다. 각각 1에서 7 사이의 난수를 생성 할 것으로 예상됩니다. 그러나 왜 어떤 숫자가 단 하나의 숫자를 생성하는지 확신 할 수 없습니다. 아래 예제를 첨부했습니다. 출력의난수를 2 차원 배열로 표시

int gameboard(char box[9][9]) 
{ 
    int x, y; 
    for(x = 0; x < 9; x++) 
    { 
     for(y = 0; y < 9; y++) 
     { 
      box[x][y] ='_'; 
     } 
    } 

    for(x = 0; x < 9; x++) 
    { 
     box[0][x]='#'; 
     box[x][8]='#'; 
     box[x][0]='#'; 
     box[8][x]='#';    
    } 
} 

void rnum(char box[9][9]) 
{ 
    int r1,r2,r3,r4,x; 
    char r='1',num; 
    srand((unsigned) time(NULL)); 

    for(x=0;x<7;x++) 
    { 
     r1 = 1 + rand()%7; 
     r2 = 1 + rand()%7; 
     r3 = 1 + rand()%7; 
     r4 = 1 + rand()%7; 

     box[r1][r2]= r + x; 
     box[r3][r4]= r + x; 
    } 

} 

예 :
enter image description here

+3

우선 -Wall 옵션을 사용하여 코드를 컴파일하고 모든 경고를 수정하십시오. – Garf365

+1

다음과 같이 :'pname' 함수의'char name [20];'변수는'char name [20];과 완전히 다른 변수입니다. 함수'main'에서, 입력은 버려 질 것입니다. 그러나'main'에있는 것을 사용하지 않습니다. 왜냐하면 초기화되지 않기 때문입니다. –

답변

1

각 숫자 코드에 두 장소

여기 내 코드입니다. 그러나 번호가 이미 배치 된 다른 번호를 무시하는지 상관하지 않습니다. 장소가 아직 선택되지 않았는지 확인해야합니다.

for(x=0;x<7;x++) 
{ 
    do 
    { 
     r1 = 1 + rand()%7; 
     r2 = 1 + rand()%7; 
    } while(box[r1][r2] != '_'); 

    box[r1][r2]= r + x; 

    do 
    { 
     r3 = 1 + rand()%7; 
     r4 = 1 + rand()%7; 
    } while(box[r3][r4] != '_'); 

    box[r3][r4]= r + x; 
} 

향후 조언 : 이러한 종류의 문제를 찾으려면 디버거를 사용하십시오. 디버거는 프로그램을 단계별로 실행하고 각 변수의 값을 관찰하는 데 정말 유용합니다.

+0

나는 그것을 시도했지만 아무것도 표시하지 않습니다. – user6463380

+0

@Sander De Dycker 그래! :-) – user6463380

+0

@ user6463380 SanderDeDycker의 의견을 바탕으로'r3'과'r4'를 선택하기 전에'box [r1] [r2]'에 영향을 주면'r1','r2' 사이의 관계를 확인할 필요가 없습니다. 'r3','r4'. 정말 비슷한 코드이기 때문에 함수를 만들 수도 있습니다. – Garf365