Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Ucesnik
- {
- private:
- char *ime;
- bool pol;
- int vozrast;
- public:
- Ucesnik()
- {
- ime=new char[0];
- }
- Ucesnik(char *i, bool p, int v)
- {
- ime=new char[strlen(i)+1];
- strcpy(ime, i);
- pol=p;
- vozrast=v;
- }
- Ucesnik(const Ucesnik &u)
- {
- ime=new char[strlen(u.ime)+1];
- strcpy(ime, u.ime);
- pol=u.pol;
- vozrast=u.vozrast;
- }
- Ucesnik& operator= (const Ucesnik &u)
- {
- if(this!=&u)
- {
- delete[] ime;
- ime=new char[strlen(u.ime)+1];
- strcpy(ime, u.ime);
- pol=u.pol;
- vozrast=u.vozrast;
- }
- return *this;
- }
- ~Ucesnik()
- {
- delete[] ime;
- }
- int getVozrast()
- {
- return vozrast;
- }
- friend bool operator> (const Ucesnik &u1, const Ucesnik &u2)
- {
- return u1.vozrast>u2.vozrast;
- }
- friend ostream& operator<< (ostream &out, Ucesnik &u)
- {
- if(u.pol==0)
- {
- out<<u.ime<<endl;
- out<<"zenski"<<endl;
- out<<u.vozrast<<endl;
- }
- else
- {
- out<<u.ime<<endl;
- out<<"maski"<<endl;
- out<<u.vozrast<<endl;
- }
- }
- };
- class Maraton
- {
- private:
- char lokacija[100];
- Ucesnik *ucesnici;
- int brUcesnici;
- public:
- Maraton()
- {
- ucesnici=new Ucesnik[0];
- }
- Maraton(char *l, Ucesnik *u, int brU)
- {
- strcpy(lokacija, l);
- ucesnici=new Ucesnik[brU];
- for(int i=0; i<brU; i++)
- {
- ucesnici[i]=u[i];
- }
- brUcesnici=brU;
- }
- Maraton(const Maraton &m)
- {
- strcpy(lokacija, m.lokacija);
- ucesnici=new Ucesnik [m.brUcesnici];
- for(int i=0; i<m.brUcesnici; i++)
- {
- ucesnici[i]=m.ucesnici[i];
- }
- brUcesnici=m.brUcesnici;
- }
- Maraton& operator= (const Maraton &m)
- {
- if(this!=&m)
- {
- delete[] ucesnici;
- strcpy(lokacija, m.lokacija);
- ucesnici=new Ucesnik[m.brUcesnici];
- for(int i=0; i<m.brUcesnici; i++)
- {
- ucesnici[i]=m.ucesnici[i];
- }
- brUcesnici=m.brUcesnici;
- }
- return *this;
- }
- ~Maraton()
- {
- delete[] ucesnici;
- }
- Maraton& operator+= (const Ucesnik &u)
- {
- Ucesnik *tmp;
- tmp=new Ucesnik[brUcesnici+1];
- for(int i=0; i<brUcesnici; i++)
- {
- tmp[i]=ucesnici[i];
- }
- tmp[brUcesnici]=u;
- delete[] ucesnici;
- ucesnici=tmp;
- brUcesnici++;
- return *this;
- }
- int prosecnaVozrast()
- {
- int suma=0;
- for(int i=0; i<brUcesnici; i++)
- {
- suma+=ucesnici[i].getVozrast();
- }
- return suma/brUcesnici;
- }
- int pecatiPomladi(Ucesnik &u)
- {
- for(int i=0; i<brUcesnici; i++)
- {
- if(ucesnici[i].getVozrast()<prosecnaVozrast())
- {
- cout<<ucesnici[i];
- }
- }
- }
- };
- int main() {
- char ime[100];
- bool maski;
- int vozrast, n;
- cin >> n;
- char lokacija[100];
- cin >> lokacija;
- Maraton m(lokacija);
- Ucesnik **u = new Ucesnik*[n];
- for(int i = 0; i < n; ++i) {
- cin >> ime >> maski >> vozrast;
- u[i] = new Ucesnik(ime, maski, vozrast);
- m += *u[i];
- }
- m.pecatiPomladi(*u[n - 1]);
- cout << m.prosecnaVozrast() << endl;
- for(int i = 0; i < n; ++i) {
- delete u[i];
- }
- delete [] u;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement