CCCPaste

Untitled

#include 


using namespace std;


class Ucenik{
private:
    string ime;
    double prosek;
    int skolska_godina;
public:
    Ucenik(){
    }
    Ucenik(string _ime, double _prosek, int _skolska_godina){
        ime = _ime;
        prosek = _prosek;
        skolska_godina = _skolska_godina;
    }
    Ucenik & operator ++ (int i){
        skolska_godina++;
        return *this;
    }
    friend ostream & operator << (ostream & stream, Ucenik u);
    bool operator > (Ucenik tmp) {
        if(prosek > tmp.prosek){
            return true;
        }
        return false;
    }
    double get_prosek() {
        return prosek;
    }
};
ostream & operator << (ostream & stream, Ucenik u) {
    stream << u.ime << " " << u.prosek << " " << u.skolska_godina << endl;
    return stream;
}
class Paralelka {
private:
    int n;
    Ucenik * niza;
public:
    Paralelka () {}
    Paralelka(int _n) {
        n = _n;
        niza = new Ucenik[n];
    }
    Paralelka & operator += (Ucenik u) {
        Ucenik tmp[n + 1];
        for(int i = 0; i < n; i++) {
            tmp[i] = niza[i];
        }
        tmp[n] = u;
        n++;
        niza = new Ucenik[n];
        
        for(int i = 0; i < n; i++) {
            niza[i] = tmp[i];
        }
        return *this;
    }
    Paralelka & operator ++ (int i) {
        for(int i = 0; i < n; i++) {
            niza[i]++;
        }
        return *this;
    }
    void nagrada() {
        for(int i = 0; i < n; i++) {
            if(niza[i].get_prosek() == 10.0) {
                cout << niza[i];
            }
        }
    }
    void najvisokProsek() {
        double najgolem_prosek = 0.0;
        int idx = 0;
        for(int i = 0; i < n; i++) {
            if(niza[i].get_prosek() > najgolem_prosek) {
                najgolem_prosek = niza[i].get_prosek();
                idx = i;
            }
        }
        cout << niza[idx];
    }
    friend ostream & operator << (ostream & stream, Paralelka tmp);
};
ostream & operator << (ostream & stream, Paralelka tmp) {
    for(int i = 0; i < tmp.n; i++) {
        stream << tmp.niza[i];
    }
    return stream;
}
    
int main()
{
    Ucenik u1("Martina Martinovska", 9.5, 3);
    Ucenik u2("Darko Darkoski", 7.3, 2);
    Ucenik u3("Angela Angelovska", 10, 3);
    Paralelka p(0);
    p += u1;
    p += u2;
    p += u3;
    cout << p;
    cout << "Nagradeni:" << endl;
    p.nagrada();
    cout << endl;
    p.najvisokProsek();
    cout << endl;
    u2++;
    cout << p;
    cout << endl;
    p++;
    cout << p;
    return 0;
}