Проблемы с алгоритмом - PullRequest
0 голосов
/ 04 мая 2018

Я не понимаю, что происходит. Предполагается обменять 3 карты на 4 человека. Если раунд равен 0, p [0] получает p [1] s карт, p [1] получает p [2] s карт, p [2] получает p [3] s карт, а p [3] получает p [0] ] карты. Если в качестве примера использовать раунд 0, то все отлично поменяется местами, за исключением того, что p [3] получает p [1] s 3 карты вместо p [0] s 3 карты. Я установил массив удержания для хранения p [0] 3-х номеров карт и 3-х типов карт, прежде чем они меняются местами, и когда я держу [0] [j] и удерживаю [1] [j], он отображает значения, которые они имеют. должен держать. Но когда я пытаюсь присвоить p [3] эти значения, он все равно присваивает им значения p [1] s. Есть идеи?

void send3(player p[], deck &deck, int& round){
    srand(time(0));
    int give[4][3];

    cout << "Pick 3 cards to send.\n";
    p[0].handdisp(deck);
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                if (i == 0) {
                    cin >> give[i][j];
                    while (give[i][j] > 13 || give[i][j] < 1) {
                        cout << "Number not in range. \n";
                        cin >> give[i][j];
                    }
                    give[i][j] -= 1;
                }
                else {
                    give[i][j] = rand() % 13;
                    for (int k = 0; k < 3; k++) {
                        if (k != j) {
                            while (give[i][j] == give[i][k]) {
                                give[i][j] = rand() % 13;
                            }
                        }
                    }
                }
            }
        }
        int hold[2][3];
            for (int i = round; i < round+4; i++) {
                for (int j = round; j < round+3; j++) {
                    if (i==round){
                        hold[0][j]=p[i % 4].hand[give[i % 4][j % 3]];
                        hold[1][j]=p[i % 4].type[give[i % 4][j % 3]];
                        p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[give[(i + 1) % 4][j % 3]];
                        p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[give[(i + 1) % 4][j % 3]];
                    }
                    else if (i==round+3){
                        cout << (i+1)%4 <<hold[0][j] <<" " << hold[1][j] << endl;
                        p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[hold[0][j]];
                        p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[hold[1][j]];
                    }
                    else {
                        p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[give[(i + 1) % 4][j % 3]];
                        p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[give[(i + 1) % 4][j % 3]];
                    }
                }
            }
}
...