Cześć,
zacząłem trochę programowania obiektowego. I totalnie sobie nie radzę z sortowaniem obiektów według atrybutu, nie rozumiem jak powinno zostać to zrobione. Czy mógłby ktoś wytłumaczyć?
Mam taki kod:
#include<iostream>
#include<string>
using namespace std;
class Ksiazka {
int id;
string tytul;
string autor;
float cena;
float rok_wydania;
float liczba_stron;
string stan;
public:
void wpisz() {
cout << "\nPodaj informacje o ksiazce\n";
cout << "identyfikator ksiazki: ";
cin >> id;
cout << "tytul: ";
cin >> ws; //wyczyszczenie wejscia z białych znaków
getline(cin, tytul);
cout << "autor: ";
getline(cin, autor);
cout << "cena: ";
cin >> cena;
cout << "rok wydania: ";
cin >> rok_wydania;
cout << "liczba stron: ";
cin >> liczba_stron;
cout << "stan: ";
cin >> ws;
getline(cin, stan);
}
void pokaz() {
cout << "\n\"" << tytul << "\", " << autor << ", " << cena << " zl.";
}
float daj_cene() {
return cena;
}
string daj_autora() {
return autor;
}
float daj_rok() {
return rok_wydania;
}
};
int dodaj_ksiazki(int n, Ksiazka ksiazki[]) {
char decyzja = 't';
do {
ksiazki[n].wpisz();
n++;
cout << "\nCzy chcesz dodac nowa ksiazke (t/n) ";
cin >> decyzja;
} while (decyzja == 't');
return n;
}
void pokaz_wszystkie_ksiazki(int n, Ksiazka ksiazki[]) {
for (int i = 0; i < n; i++) {
ksiazki[i].pokaz();
}
}
void pokaz_tanie_ksiazki(int n, Ksiazka ksiazki[]) {
float cena_max;
cout << "\nPodaj cene maksymalna: ";
cin >> cena_max;
for (int i = 0; i < n; i++) {
if (ksiazki[i].daj_cene() <= cena_max) {
ksiazki[i].pokaz();
}
}
}
}
int main() {
Ksiazka ksiazki[100];
int lb_ksiazek = 0;
lb_ksiazek = dodaj_ksiazki(lb_ksiazek, ksiazki);
pokaz_wszystkie_ksiazki(lb_ksiazek, ksiazki);
pokaz_tanie_ksiazki(lb_ksiazek, ksiazki);
}
I moje pytanie: jak mogę posortować utworzone obiekty np. po cenie rosnąco?
Będę wdzięczny za pomoc
Pozdrawiam