Я пытаюсь выполнить пузырьковую сортировку свойства LastName (в структуре 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++;
}
}
Это выглядит как lastName
это массив символов.
Вы не можете назначать целые массивы друг другу; вам нужно использовать strcpy()
(#включают <cstring>
) копировать одно в другое. Кроме того, используя <
с символьными массивами вызовет сравнение адресов памяти первых элементов в каждом массиве, а не всей строки символов; использование strcmp
для этого (который возвращает < 0 если первый параметр лексикографически < второй параметр).
Обратите внимание, что вы можете (и, вероятно, должны) использовать std::string
вместо (#include <string>
), которая автоматически обеспечит прозрачное копирование, сравнение и динамический рост.
Других решений пока нет …