オンラインで検索しましたが、これについて何も見つかりませんでした。 私はC++入門クラスにあり、オブジェクトの配列を扱うプロジェクトを持っています。オブジェクト(メディアと呼ばれる)には名前と評価があります。私は3つの異なるメディアオブジェクトをメディアオブジェクト配列に入れました。私はそれらを名前で並べ替える方法を見つける必要があります。私はc-stringsの選択ソートのコードを与えられましたが、メディアオブジェクトを扱うためにこれを変更するために正確に何をするべきかを理解できませんでした。ここで私の選択したC文字列のソートです。選択オブジェクトの配列を並べ替えます
void selectsort(char str[][20], int N)
{
int pass, j, min;
char temp[20];
for (pass = 0; pass <= N - 2; pass++) // passes
{
min = pass;
for (j = pass + 1; j < N; j++) // in each pass
if (strcmp(str[min], str[j]) > 0)
min = j;
strcpy(temp, str[min]);
strcpy(str[min], str[pass]);
strcpy(str[pass], temp);
}
}
私は、これはそう、同じ結果を返すだろうと信じてい
void media::operator=(media med)
{
strcpy(mname, med.mname);
}
と=のオーバーロードによって
int media::operator<(media med)
{
return strcmp(mname, med.mname);
}
とstrcpyので<をオーバーロードすることにより、strcmpのを取り除く得ていますか?
これまでのところ、私のコードはここにあります(どうやってそれを理解していないのか分かりません)。
void selsort(media mry[], int n) // mry[] is the object array, n is the
// number of objects in the array
{
int pass, j, min;
media temp[1];
for (pass = 0; pass <= n - 2; pass++) // passes
{
min = pass;
for (j = pass + 1; j < n; j++) // in each pass
if ((mry[min] < mry[j]) < 0)
min = j;
temp = mry[min];
mry[min] = mry[pass];
temp = mry[min];
}
}
このコードには多くの瑕疵があると私は理解します。一時的な比較がうまくいかず、私が* tempやtemp [0]を使って取得しようとすると(ここで太陽の下のすべてを試してみると)、データエラーが壊れてしまいます。私はそれを理解するように見えることはできません。私はいつも種類を理解することに苦労しており、これは傷害に侮辱を加えるだけです。 (一部の表記が正しくない可能性がありますが、これは私がこのクラスで教えたことであり、この教授が私たちがコーディングすることを尋ねるものです)
ありがとうございました!
無関係:代わりに、独自のスワップを書くので、 'のstd :: swap'を検討してください。 – user4581301
ええ、std :: swapを使用する唯一のことは、オブジェクトがどのように動作するかを学習することになっていることです。私の教授は、すべてを記述し、あらかじめ定義されたメソッドを使用しないことを望んでいます。 – CBevs
私はあなたの編集をロールバックしました。なぜなら、解答が解決した問題を取り除くことによって無意味な答えになったからです。しないでください。代わりに別の質問をしてください。 – user4581301