Hej, stworzyłam sobie strukturę studentów, dane wczytywane są z klawiatury, chciałabym teraz aby studenci byli sortowani po nazwisku (od a), ale zupełnie nie mam pomysłu jak to zrobić. W Internecie znalazłam informacje, że mogę użyć strcmp ale nie wiem jak to zrobić, zwłaszcza w strukturze. Oto fragment mojego kodu:
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <iomanip>
#include <string>
#define N 3
using namespace std;
struct Dane_osobowe
{
char nazwisko[20];
char wydzial[30];
int nr_albumu;
};
struct Student
{
Dane_osobowe osoba;
float oceny[3];
float srednia;
};
void wypelnij_tab (Student *tab);
void wyswietl_tab (Student *tab);
void wypelnij_oceny (Student *tab);
void wypisz_oceny (Student *tab);
int licz_srednia (Student *tab);
void sortuj_po_nazwisku(Student *tab);
int main()
{
//srand(time(NULL));
Student *tab = new Student [N];
cout << "Hello world!" << endl;
wypelnij_tab (tab);
wyswietl_tab (tab);
wypelnij_oceny (tab);
wypisz_oceny (tab);
sortuj_po_nazwisku(tab);
delete []tab;
tab = NULL;
return 0;
}
void wypelnij_tab (Student *tab)
{
for(int i=0; i<N; i++)
{
cout<<"podaj nazwisko:"<<endl;
cin.getline(tab[i].osoba.nazwisko, 20);
cout<<"podaj wydzial:"<<endl;
cin.getline(tab[i].osoba.wydzial, 30);
cout<<"podaj numer albumu:"<<endl;
cin>>tab[i].osoba.nr_albumu;
cin.ignore();
}
}
void wyswietl_tab (Student *tab)
{ cout<<"WYSWIETLENIE"<<endl<<endl<<endl;
for(int i=0; i<N; i++)
{
cout<<"nazwisko:"<<endl;
cout<<tab[i].osoba.nazwisko<<endl;
cout<<"wydzial:"<<endl;
cout<<tab[i].osoba.wydzial<<endl;
cout<<"numer albumu:"<<endl;
cout<<tab[i].osoba.nr_albumu<<endl;
}
}
void wypelnij_oceny (Student *tab)
{
for (int i=0; i<N; i++)
{
for(int j=0; j<3; j++)
{
tab[i].oceny[j] = ((rand()% 7)+4)*0.5;
}
}
}
void wypisz_oceny (Student *tab)
{
for (int i=0; i<N; i++)
{ cout <<"student "<<i+1<<endl;
for(int j=0; j<3; j++)
{
cout<< tab[i].oceny[j]<<endl;
}
}
}
}
/* void sortuj_po_nazwisku (Student *tab)
{ string tmp;
for(int i=0; i<N; i++)
for(int j=0; j<N-1; j++)
while (strcmp (tab[i].osoba.nazwisko,tab[j].osoba.nazwisko) > 0);
{
tmp = tab[i].osoba.nazwisko;
tab[i].osoba.nazwisko[j]=tab[j].osoba.nazwisko;
tab[j].osoba.nazwisko = tmp;
}
} */
coś tam sobie próbowałam, ale raczej na ślepo, można tu próbować jakoś bąbelkowo czy jak to zrobić? (c++)
z góry dziękuje :)