得点の多い順に並べ替える選択並べ替えを実行しようとしています。3 つのカテゴリがあります。ゴール、アシスト、名前。ゴールで正しく並べ替えることができ、並べ替え後にプレーヤーのゴールとアシストを正しい場所に保つことができますが、並べ替え後に名前を正しい場所に移動しようとすると、名前の最初の文字しか移動しません。これが私のコードです。助けてくれてありがとう!
void sortPlayersByGoals(int* goals, int* assists, char** names, int size)
{
int lh, rh, i, tempG, tempA, tempN;
for(lh = 0; lh < size; lh++)
{
rh = lh;
for(i = lh; i < size; i++)
{
if(goals[i] > goals[rh])
{
rh = i;
}
tempG = goals[lh];
tempA = assists[lh];
tempN = *names[lh];
goals[lh] = goals[rh];
*names[lh] = *names[rh];
assists[lh] = assists[rh];
goals[rh] = tempG;
*names[rh] = tempN;
assists[rh] = tempA;
}
}
}
それが私の問題を示すのに役立つ場合、これが私の出力です..
Pre-Sort
Name Goals Assists
Redden 2 0
Berglund 5 2
Jackman 2 0
Stewart 4 0
Oshie 3 5
McDonald 2 4
Pietrangelo 2 7
Perron 2 6
Tarasenko 5 5
Post-Sort
Name Goals Assists
Tedden 5 5
Berglund 5 2
Sackman 4 0
Otewart 3 5
Rshie 2 0
McDonald 2 4
Pietrangelo 2 7
Perron 2 6
Jarasenko 2 0