Jeżeli posortuje strukturę według wieku to jeśli ją wyświetlę to wiek jest posortowany dobrze natomiast nazwiska i imiona nie chcę się zamienić np przed sortowaniem Jan Kowalski wiek 23 i Adam Nowak wiek 33 natomiast po sortowaniu jest Jan Kowalski 33 i Adam Nowak 23. Co zmienić w kodzie żeby wszystko się sortowało.
#include<iostream>
#include<cstdlib>
#include<time.h>
using namespace std;
int i,n,j;
struct Student
{
int wiek;
int oceny;
int rok;
int id;
string imie;
string nazwisko;
};
nowe_dane(Student *arr)
{
int liczba=10;
string imiona[]= {"Jan","Basia","Stasia","Kasia","Piotr","Pawel","Gawel","Lena","Ksenia","Benio"};
string nazwiska[]= {"Nowak","Bienko","Kowalski","Wozniak","Kaczynski","Adamczyk","Dudek","Budka","Kludka","Big"};
for(i=0; i<n; i++)
{
arr[i].wiek=rand()%5+20;
arr[i].rok=rand()%5+1;
arr[i].id=i;
arr[i].oceny=rand()%((500-200+1)+200) /100.0;
arr[i].imie=imiona[rand()%liczba];
arr[i].nazwisko=nazwiska[rand()%liczba];
}
}
void wyswietl_dane(Student *arr)
{
for(i=0; i<n; i++)
{
cout<<arr[i].id<<". "<<arr[i].imie<<" "<<arr[i].nazwisko<<" wiek:"<<arr[i].wiek<<" rok:"<<arr[i].rok<<" ocena:"<<arr[i].oceny<<endl;
}
}
void bombelkowe(Student *arr)
{
int x;
for (i=1; i<n; i++)
{
for(j=n-1; j>=1; j--)
{
if(arr[j].wiek<arr[j-1].wiek)
{
x=arr[j-1].wiek;
arr[j-1].wiek=arr[j].wiek;
arr[j].wiek=x;
}
}
}
}
int main()
{
srand(time(NULL));
cout<<"Podaj liczbe studentow:";
cin>>n;
Student *arr=new Student[n];
int wybor;
do
{
cout<<"1.Nowe dane"<<endl;
cout<<"2.Bombelkowe"<<endl;
cout<<"3.Wyswietl dane"<<endl;
cout<<"Odpowiedz:";
cin>>wybor;
switch(wybor)
{
case 1:
nowe_dane(arr);
break;
case 2:
bombelkowe(arr);
break;
case 3:
wyswietl_dane(arr);
break;
}
}
while(wybor!=8);
return 0;
}