私はCでdoubleの配列をソートしようとしていますが、期待される出力が得られません。実際の値の代わりにメモリアドレスをソートしているようです。私はvairablesを(* grade [i])に変更しようとしましたが、 "無効な型引数unary *"というエラーが出ます。ここに問題のコードのスナップショットがあります。Cでダブルの配列をソート
void sortGrade(double grade[], int n){
int i, j, swapped;
double temp;
for (i = 0; i < n; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (grade[i] < grade[j])
{
temp = grade[i];
grade[i] = grade[j];
grade[j] = temp;
}//end if
}//end inner for
}//end outer for
printf("After sort:\nGrade\n");
for (i = 0; i < n; ++i)
{
printf("%d\n", grade[i]);
}//end for
}//end sortGrade
ご協力いただければ幸いです。 これは学校向けのものですが、割り当てはすでに提出されています。今は実際にそれを動作させる方法を理解しようとしています。
あなたのソートアルゴリズムは大丈夫です:唯一のエラーはprintfのでした。印刷時にエラーが発生します。浮動小数点数を出力するには、 '%f'または'%g'を使用します。 –
期待される出力が何であるか教えてくれないと言うのは難しいです。明らかに、コンパイラの警告をオンにする必要があるので、M Oehmsのアドバイスは必要ありません。それを修正するとソートされますが、期待通りのものではないかもしれません。 – gnasher729
メモリアドレスをソートした場合、明らかにアイテムの順序は変わりません。配列要素は常に_メモリ_アドレスでソートされています。 – gnasher729