Cześć! Mam problem z sortowaniem tablicy struktur wg danego pola. Niestety nadal nie wiem jak to zrobić, próbowałem, czytałem, oglądałem jakieś poradniki i przykłady na YouTube, ale widocznie i słabo szukam i słabo umiem dostosować sortowanie. Jest ktoś w stanie mnie naprowadzić na jakiś trop? A może w inny sposób powinienem zbudować tablicę struktur?
Jeżeli post dodany w złym wątku lub narusza jakieś konkretne zasady i regulamin, proszę o uprzedzenie.
Tak wygląda kod:
#include <iostream>
using namespace std;
//zmienne
struct ksiazka {
int nr_kat;
string tytul;
string autor;
int l_stron;
char rodzaj_okladki;
};
string imie[10] = { "Andrzej","Maciek","Marek", "Darek", "Mirek", "Bartek", "Nikodem", "Pawel", "Henryk", "Czarek", };
string tytul_ksiazki[10] = { "Lupa","Dzieci z Bulerbyn","Antagonista", "Miasto 1922", "Franklin i przyjaciele", "Jądro ciemności", "Pan Tadeusz", "Podstawy Przedsiebiorczosci", "Cegielkowo", "Wladcy much", };
//FUNKCJE
ksiazka zbior_ksiazek[10];
int i;
void tworz_ksiazki() {
for (int i = 0; i < 10; i++)
{
zbior_ksiazek[i].nr_kat = i + 1;
zbior_ksiazek[i].tytul = imie[i];
zbior_ksiazek[i].autor = tytul_ksiazki[i];
zbior_ksiazek[i].l_stron = i * i * 9;
if ((i + 1) % 2 == 0) {
zbior_ksiazek[i].rodzaj_okladki = 'T';
}
else if ((i + 1) % 2 > 0) {
zbior_ksiazek[i].rodzaj_okladki = 'M';
}
}
}
void wys_z_miekka_okladka() {
for (int i = 0; i < 10; i++)
{
if (zbior_ksiazek[i].l_stron > 100) {
if (zbior_ksiazek[i].rodzaj_okladki = 'M') {
cout << "NR KAT: " << zbior_ksiazek[i].nr_kat << endl;
cout << "TYTUL: " << zbior_ksiazek[i].tytul << endl;
cout << "AUTOR: " << zbior_ksiazek[i].autor << endl;
cout << "LICZBA STRON: " << zbior_ksiazek[i].l_stron << endl;
cout << "RODZAJ OKLADKI: " << zbior_ksiazek[i].rodzaj_okladki << endl;
cout << "_____________________________________________________________________________________________________" << endl;
}
}
}
}
void wys_wszystkie() {
{
for (int i = 0; i < 10; i++) {
cout << "NR KAT: " << zbior_ksiazek[i].nr_kat << endl;
cout << "TYTUL: " << zbior_ksiazek[i].tytul << endl;
cout << "AUTOR: " << zbior_ksiazek[i].autor << endl;
cout << "LICZBA STRON: " << zbior_ksiazek[i].l_stron << endl;
cout << "RODZAJ OKLADKI: " << zbior_ksiazek[i].rodzaj_okladki << endl;
cout << "_________________________________________________________________________________" << endl;
}
}
}
// w zależnosci czego potrzebujemy (jakiej funkcji) usuwamy tylko znaki "//" z funkcji głównej
//FUNKCJA GLOWNA
int main()
{
tworz_ksiazki();
wys_wszystkie();
wys_z_miekka_okladka();
return 0;
}