Pa evo ti nesto sto lici na C++/11 samo popuni main f-ju....
Code:
#include <iostream>
#include <string>
#include <set>
#include <vector>
#include <algorithm>
#include <cassert>
using namespace std;
struct Predmet
{
string _naziv;
int _ocjena;
int _ects;
bool operator<(const Predmet& other)const {
return _naziv<other._naziv;
}
void unos() {
cout << "Naziv Predmeta: ";
getline(cin,_naziv);
}
void ispis()const {
cout << "Naziv Predmeta: " << _naziv << endl;
}
bool istiPredmet(Predmet p) {
return (_naziv == p._naziv);
}
};
struct Student
{
string _imePrezime;
string _brojIndexa;
set<Predmet> _predmeti;
void unos() {
cout << "Ime: ";
getline(cin,_imePrezime);
cout << "Broj Indexa: ";
getline(cin,_brojIndexa);
}
void ispis()const {
cout << "Ime i Prezime: " << _imePrezime << endl;
cout << "Broj indexa: " << _brojIndexa << endl;
for (const auto& p :_predmeti)
p.ispis();
}
//nije moguće dodati dva predmeta sa istim nazivom
bool dodajPredmet(Predmet p) {
_predmeti.insert(p);
return true;
}
//ukoliko student nema ocjena prosjek mu je 5
float izracunajProsjek()const {
float prosjek = 0;
for (const auto& p : _predmeti)
prosjek += p._ocjena;
return prosjek==0?5:prosjek / _predmeti.size();
}
};
//funkcija treba da vrati studenta sa najboljim prosjekom
Student najboljiStudent(const vector<Student>& studenti){
assert(studenti.size());
float max = 5;
int best=0;
for(size_t i = 0;i<studenti.size();++i) {
float p = studenti[i].izracunajProsjek();
if (p > max ) {
max = p;
best = i;
}
}
return studenti[best];
}
int main()
{
// ovo uradi ti....
//napraviti niz od 3 studenta
//dodati im po 2 predmeta
//pronaći najboljeg studenta
}