C++ struktúra sorba rendezése?
Olyan kéne nekem hogy van ez a struktúra és először jegy,majd azon belül névsor szerint kéne sorba rendezni. ennyi van meg csak:
int i, j, n, a, b;
struct tanulo
{ string nev;
int jegy;
};
cout <<"Hany tanulo van az osztalyban?\n";
cin >> n;
cin.get();
tanulo osztaly[i];
for(i=0; i<n; i++)
{
cout << "\n Kerem a(z) " << i+1 << ".tanulo nevet:\t";
getline(cin, osztaly[i].nev);
cout << "\n Kerem a(z) " << i+1 << ".tanulo jegyet:\t";
cin >> osztaly[i].jegy;
cin.get();
}
Ha jól értem a kérdést akkor az a feladat, hogy jegy szerint növekvő vagy csökkenő sorba kell rendezni a struktúra tömböt és ha van 2 vagy több azonos jeggyel rendelkező elem akkor azokat név szerint kell rendezni.
Mindegy milyen rendező algoritmust használsz mivel a probléma mérete nem adja ki az egyes algoritmusok közötti sebesség különbséget.
Ha azt érted kezdő megoldás alatt, hogy nem előre implementált rendező algoritmust használsz, akkor egyszerűen írd meg valamelyiket.
Elvben hogy kéne működnie:
Kell egy struktúra típusu ideiglenes segédváltozó a cseréhez(tanulo tmp)
Majd ciklussal(ciklusokkal) végigmész a tömbön, egy kiválasztott elemet összehasonlítasz a többi elemmel attól függően hogy növekvő vagy csökkenő sorba szeretnéd rendezni, ha a jegy alapján egyenlőséget tapasztalsz akkor megvizsgálod a nevet is és aszerint rendezel, ha ez is egyenlőséget ad akkor a bemeneti sorrendet hagyod meg (ettől lesz stabil rendezés)
A segédváltozóra azért van szükség, hogy ne az egyes adattagokat cseréld, hanem struktúra tömb elemeit.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!