0

バブル ソートを使用して、配列の LastName プロパティ (struct StudentRecord の下、したがって名前) をバブル ソートしようとしています。しかし、私はそうするのに苦労しています。

エラーが表示されます (コンパイルに MinGW を使用しています):

Invalid array assignment

これが私のコードです:

void option2 (StudentRecord student[], int n)
{
   int pass = 1;
   bool done = false;
   StudentRecord temp;
   while (!done && pass <= n-1)
   {
      done = true;
      for (int i = n-1; i >= pass; i--)
      {
         if (student[i].lastName < student[i-1].lastName)
         {
            temp.lastName = student[i].lastName;
            student[i].lastName = student[i-1].lastName;
            student[i-1].lastName = temp.lastName;
            done = false;
         }
      }
      pass++;
   }
}
4

1 に答える 1

2

lastName文字の配列のように見えます。

アレイ全体を相互に割り当てることはできません。一方を他方にコピーするには、 strcpy()(#include )を使用する必要があります。<cstring>さらに、<文字配列で使用すると、文字列全体ではなく、各配列の最初の要素のメモリアドレスが比較されます。これに使用strcmpします(最初のパラメーターが辞書式順序で<2番目のパラメーターである場合は<0を返します)。

std::string代わりに(#include )を使用できる(そしておそらくそうすべきである)ことに注意してください。<string>これにより、コピー、比較、および動的な拡張が透過的に自動的に提供されます。

于 2012-12-05T20:32:16.793 に答える