내 기능에 도움이 필요합니다. 이것이 내가 한 것입니다.포인터 배열에서 요소를 바꾸는 방법
스와핑이 발생하기 전에 올바르게 코딩되어야하는 내용이 확실치 않아 세그먼트 분할 오류가 발생했습니다. 도와주세요, 제발.
내 기능에 도움이 필요합니다. 이것이 내가 한 것입니다.포인터 배열에서 요소를 바꾸는 방법
스와핑이 발생하기 전에 올바르게 코딩되어야하는 내용이 확실치 않아 세그먼트 분할 오류가 발생했습니다. 도와주세요, 제발.
카드의 덱을 나타 내기 위해 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;
좋은 참고 문헌은 [Fisher Yates shuffling algorithm in C] (https://stackoverflow.com/questions/42321370/fisher-yates-shuffling-algorithm-in-c)이며 답변에서 원래 SO 질문에 대한 링크를 참조하십시오. –
에 오신 것을 환영합니다 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)를 만드는 방법을 배우십시오. –