>

플레이어와 그 점수를 최고 점수에서 최저 점수로 인쇄하려고합니다. 내려갈 수는 있지만 올바른 플레이어 이름과 관련이 없습니다.

다음 코드로 :

void showPlayers() {
int desc;
for (int i = 0; i < pointer; i++) {
    for (int j = 0; j < pointer; j++) {
        if (scores[i] < scores[j]) {    //flipping comparison operator descends data, 
                                        //but either increments/decrements each player's 
                                        //score
            desc = scores[i];
            scores[i] = scores[j];
            scores[j] = desc;
        }
    }
}
for (int i = 1; i < pointer; i++) {
    cout << playerNames[i] << "\t" << scores[i] << "\n";
}
cout << endl;
}

다음과 같은 출력을 받고 있습니다 :

Player1    20
Player2    30
Player3    40

for (int i = 0; i < pointer; i++) {
    for (int j = 0; j < pointer; j++) {
        if (scores[i] > scores[j]) {
            swap(scores[i], scores[j]); 
        }
    }
}
for (int i = 0; i < pointer; i++) {
    for (int j = 0; j < pointer; j++) {
        if (playerNames[i] > playerNames[j]) {
            swap(playerNames[i], playerNames[j]);
        }
    }
}
for (int i = 0; i < pointer; i++) {
    cout << playerNames[i] << "\t" << scores[i] << "\n";
}

  • 답변 # 1

    if 내부에서 이것을 사용하십시오  진술 :

    std::swap(scores[i], scores[j]);
    std::swap(playerNames[i], playerNames[j]);
    
    

    해당 playerNames 를 바꾸지 않았습니다  당신이 점수를 교환 할 때. 또한 std::swap 를 사용하면 훨씬 더 읽기 쉽습니다. .

관련 자료

  • 이전 안드로이드에서 로컬 JSON을 통한 로컬 이미지
  • 다음 sql - mysql - select 문에 사실상 레코드 삽입