Witam, mam problem. Próbuję posortować wektor struktur w klasie aczkolwiek wyskakuje mi błąd: no matching function for call to sort. mógłbym prosić o wyjaśnienie dlaczego ten błąd się pojawia. poniżej kod programu
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <fstream>
#include <vector>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct Dane
{
string klasa;
int l_uczniow;
int l_ksiazek;
};
class Klasa
{
public:
//string imie;
Dane dane;
vector<Dane> szkola;
void WprowadzDane()
{
cout << "Wprowadz klase: ";
cin >> dane.klasa;
cout << "\nWprowadz liczbe uczniow w klasie: ";
cin >> dane.l_uczniow;
cout << "\nWprowadz ilosc przeczytanych ksiazek: ";
cin >> dane.l_ksiazek;
szkola.push_back(dane);
}
void SredniaPrzeczytanychKsiazek()
{
//int suma = 0;
for (int i = 0; i < szkola.size(); i++)
{
cout << "Srednia przeczytnych ksiazek klasy " << szkola[i].klasa << " wynosi: " << szkola[i].l_ksiazek/szkola[i].l_uczniow << "\n";
}
//return suma/szkola.size();
}
bool fcjaPorownujaca(const Dane& a, const Dane& b)
{ return (a.l_ksiazek > b.l_ksiazek); }
void Sortowanie()
{
sort(szkola.begin(), szkola.end(), fcjaPorownujaca);
cout << "1. miejsce zajela klasa: " << szkola[0].klasa << "\n";
cout << "2. miejsce zajela klasa: " << szkola[1].klasa << "\n";
cout << "3. miejsce zajela klasa: " << szkola[2].klasa << "\n";
}
void ZapisDoPliku(char plik[])
{
// wybor;
ofstream zm_plik;
zm_plik.open(plik,ios_base::app);
for (int i = 0; i < szkola.size(); i++)
{
zm_plik << szkola[i].klasa << " zawiera " << szkola[i].l_uczniow << " uczniow,\n ";
zm_plik << "przeczytali oni: " << szkola[i].l_ksiazek << " ksiazek.\n\n\n";
}
for (int i = 0; i < szkola.size(); i++)
{
zm_plik << "Srednia przeczytnych ksiazek klasy " << szkola[i].klasa << " wynosi: " << szkola[i].l_ksiazek/szkola[i].l_uczniow << "\n";
}
//zm_plik <<
zm_plik.close();
}
};
int pokaz_menu()
{
int wyb;
system("cls");
cout<<" MENU"<<endl<<endl;
printf("\nCo chcesz zrobic? Wybierz odpowiednia liczbe:\n\n");
cout<<"1: Uzupelnic dane?\n";
cout<<"2: Wyswietlic srednia arytmetyczna przeczytnych ksiazek?\n";
cout<<"3: Wyswietlic najlepsze klasy w czytaniu?\n";
cout<<"4: Zapis do pliku?\n";
cout<<"5: Wyjsc z programu?\n";
while(!(cin>>wyb))
{
cin.clear();
cin.sync();
cout << "Wprowadz liczb3!!! \n";
}
return wyb;
}
int main()
{
char nazwaPliku[20];
Klasa klasa;
do
{
int wybor = pokaz_menu();
char kontynuowac = 't';
switch(wybor)
{
case 1:
{
do
{
klasa.WprowadzDane();
cout << " Kontynuowac? t/n: ";
cin >> kontynuowac;
} while (kontynuowac == 't');
break;
}
case 2:
{
//cout << "Srednia przeczytnych ksiazek wynosi: ";
klasa.SredniaPrzeczytanychKsiazek();
break;
}
case 3:
{
klasa.Sortowanie();
break;
}
case 4:
{
cout << "Podaj nazwe pliku: ";
cin >> nazwaPliku;
klasa.ZapisDoPliku(nazwaPliku);
break;
}
case 5:
{
exit(1);
break;
}
default:
break;
}
cout << "Wcisnij dowolny przycisk zeby kontynuwac";
getch();
} while (true);
getch();
return 0;
}