Я хочу, чтобы сортировать массив с использованием структуры (мой первый раз с использованием структуры). Эта структура получает FirstName и идентификационный номер некоторых студентов, и проблема в том, что вместо отображения FirstName он показывает другие FirstNames (я использую DEV C++)сортировка структуры в C++
#include<iostream>
#include<fstream>
#include<conio.h>
#include <sstream>
using namespace std;
struct Student
{
long long int ID;
string FirstName,LastName;
} mystudent[100];
void PrintInformation(Student sEmployee[100],int b)
{
for(int i=0;i<b;i++)
{
cout << "First Name: " << sEmployee[i].FirstName<< endl;
cout << "ID: " << sEmployee[i].ID<< endl;
}
}
void Sort (Student mine);
int main()
{
int n, c, d, temp;
cout << "Enter element: ";
cin>>n;
for(int i=0;i<n;i++)
{
cout << "Enter FirstName "<<i+1<<": ";
cin>>mystudent[i].FirstName;
}
for(int i=0;i<n;i++)
{
cout << "Enter ID "<<mystudent[i].FirstName<<": ";
cin>>mystudent[i].ID;
}
for (int i = 1 ; i <= n - 1; i++)
{
d = i;
while (d > 0 && mystudent[i].ID < mystudent[i-1].ID)
{
temp = mystudent[i].ID;
mystudent[i].ID = mystudent[i-1].ID;
mystudent[i-1].ID = temp;
mystudent[i-1].FirstName=mystudent[i].FirstName;
d--;
}
}
cout<<"Sorted list in ascending order:\n";
PrintInformation(mystudent,n);
getch();
return 0;
}
Если это для реального кода производства, я бы порекомендовал [используя зЬй :: то в массиве] (http://stackoverflow.com/questions/15669900/using-sort-in-stl-to- sort-a-array) и [предоставление строгого ограничения для оператора для вашего класса Student] (http://stackoverflow.com/questions/9336579/overloading-comparison-operators-to-work-with-stl-sort-in- c) также может иметь смысл и пользовательская операторская функция вместо оператора с меньшим значением. –
Я использовал код ниже ** woolstar **, чтобы заменить имена Firstnames, но теперь он не сортируется правильно. – user2589043
спасибо всем, что моя проблема решена. – user2589043