Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.90 KB | None | 0 0
  1. // vashiot kod ovde
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. class Ucesnik{
  8. private:
  9.     char *ime;
  10.     bool pol;
  11.     int vozrast;
  12. public:
  13.     Ucesnik(const char *_ime = " ", bool _pol = true, int _vozrast = 15){
  14.         ime = new char[strlen(_ime) + 1];
  15.         strcpy(ime, _ime);
  16.         pol = _pol;
  17.         vozrast = _vozrast;
  18.     }
  19.     Ucesnik(const Ucesnik &u){
  20.         //delete [] ime;
  21.         ime = new char[strlen(u.ime) + 1];
  22.         strcpy(ime, u.ime);
  23.         pol = u.pol;
  24.         vozrast = u.vozrast;
  25.     }
  26.     ~Ucesnik(){delete [] ime;}
  27.  
  28.     bool operator>(const Ucesnik &u){
  29.         return vozrast > u.vozrast;
  30.     }
  31.     const Ucesnik& operator=(const Ucesnik &u){
  32.         //delete [] ime;
  33.         ime = new char [strlen(u.ime) + 1];
  34.         strcpy(ime, u.ime);
  35.         pol = u.pol;
  36.         vozrast = u.vozrast;
  37.         return *this;
  38.     }
  39.     friend ostream& operator<<(ostream& os, const Ucesnik &u);
  40.  
  41.     int getVozrast(){
  42.         return vozrast;
  43.     }
  44. };
  45.  
  46. class Maraton{
  47. private:
  48.     char lokacija[100];
  49.     Ucesnik *ucesnici;
  50.     int n;
  51. public:
  52.     Maraton(){}
  53.     Maraton(char *_lokacija){
  54.         strcpy(lokacija, _lokacija);
  55.         n=0;
  56.     }
  57.     Maraton(const Maraton &m){
  58.         delete [] ucesnici;
  59.         strcpy(lokacija, m.lokacija);
  60.         n = m.n;
  61.         ucesnici = new Ucesnik [n];
  62.         for(int i = 0; i<n;i++){
  63.             ucesnici[i] = m.ucesnici[i];
  64.         }
  65.     }
  66.     ~Maraton(){delete [] ucesnici;}
  67.  
  68.     Maraton & operator+=(const Ucesnik u){
  69.         Ucesnik *temp = new Ucesnik[n];
  70.         for(int i = 0; i < n; i++){
  71.             temp[i] = ucesnici[i];
  72.         }
  73.         delete [] ucesnici;
  74.         ucesnici = new Ucesnik[n+1];
  75.         for(int i = 0; i < n; i++){
  76.             ucesnici[i] = temp[i];
  77.         }
  78.         ucesnici[n] = u;
  79.         n++;
  80.  
  81.         return *this;
  82.     }
  83.  
  84.     float prosecnoVozrast(){
  85.         float zbir = 0;
  86.         for(int i = 0; i<n; i++){
  87.             zbir += ucesnici[i].getVozrast();
  88.         }
  89.         return zbir / n;
  90.     }
  91.  
  92.     void pecatiPomladi(Ucesnik &u){
  93.         for(int i = 0; i < n; i ++){
  94.             if(u > ucesnici[i]){
  95.                 cout << ucesnici[i];
  96.             }
  97.         }
  98.     }
  99. };
  100.  
  101. ostream& operator<<(ostream& os, const Ucesnik &u){
  102.     os << u.ime << endl;
  103.     if(u.pol){os << "maski" << endl;} else {os << "zhenski"<<endl;}
  104.     cout << u.vozrast << endl;
  105.     return os;
  106. }
  107.  
  108. int main() {
  109.     char ime[100];
  110.     bool maski;
  111.     int vozrast, n;
  112.     cin >> n;
  113.     char lokacija[100];
  114.     cin >> lokacija;
  115.     Maraton m(lokacija);
  116.     Ucesnik **u = new Ucesnik*[n];
  117.     for(int i = 0; i < n; ++i) {
  118.         cin >> ime >> maski >> vozrast;
  119.         u[i] = new Ucesnik(ime, maski, vozrast);
  120.         m += *u[i];
  121.     }
  122.     m.pecatiPomladi(*u[n - 1]);
  123.     cout << m.prosecnoVozrast() << endl;
  124.     for(int i = 0; i < n; ++i) {
  125.         delete u[i];
  126.     }
  127.     delete [] u;
  128.     return 0;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement