2017-11-25 5 views
0

내 기능에 도움이 필요합니다. 이것이 내가 한 것입니다.포인터 배열에서 요소를 바꾸는 방법

스와핑이 발생하기 전에 올바르게 코딩되어야하는 내용이 확실치 않아 세그먼트 분할 오류가 발생했습니다. 도와주세요, 제발.

+0

에 오신 것을 환영합니다 stackoverflow.com에. [도움말 페이지] (http://stackoverflow.com/help), 특히 [여기서 어떤 주제에 관해서 물어볼 수 있습니까?] (http://stackoverflow.com/help/) 섹션을 읽어보십시오. on-topic) 및 [ "어떤 유형의 질문을하지 않아야합니까?"] (http://stackoverflow.com/help/dont-ask). 또한 [둘러보기] (http://stackoverflow.com/tour)와 [좋은 질문을하는 방법에 대해 읽어보십시오.] (http://stackoverflow.com/help/how-to-ask). 마지막으로 [Minimal, Complete, Verifiable Example] (http://stackoverflow.com/help/mcve)를 만드는 방법을 배우십시오. –

답변

1

카드의 덱을 나타 내기 위해 int 배열을 사용하고 있고 그 배열을 섞기를 원한다고 가정합니다. 먼저, 갑판 내에 배열 크기를 지정하지 마십시오. NUM_CARDS = 52, 가정

void ShuffleCards(int *deck_of_cards) 
{ 
    int i = NUM_CARDS - 1; //it is better to initialize i in term of NUM_CARDS 
    int j, temp; 
    while(i>0) 
    { 
     j = rand()%(i+1); //gives 0 to i 
     temp = deck_of_cards[i]; 
     deck_of_cards[i] = deck_of_cards[j]; 
     deck_of_cards[j] = temp; 
     i--; 
    } 
} 

귀하의 전화 기능은 다음과 비슷한 모습이 될 것

int deck_of_cards[NUM_CARDS]; 

//do something to initialize your deck 

ShuffleCards(deck_of_cards); 

//do something with the shuffled deck; 
+0

좋은 참고 문헌은 [Fisher Yates shuffling algorithm in C] (https://stackoverflow.com/questions/42321370/fisher-yates-shuffling-algorithm-in-c)이며 답변에서 원래 SO 질문에 대한 링크를 참조하십시오. –