Advertisement
jordanov

[OOP] Фудбалска Екипа

May 31st, 2019
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.97 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. // vashiot kod ovde
  6.  
  7. class FudbalskaEkipa{
  8. protected:
  9.         char imeTrener[100];
  10.         int golovi[10];
  11. public:
  12.     FudbalskaEkipa(){}
  13.  
  14.     FudbalskaEkipa(const char *imeTrener, int *golovi){
  15.         strcpy(this->imeTrener, imeTrener);
  16.         for(int i=0;i<10;i++)
  17.         {
  18.             this->golovi[i] = golovi[i];
  19.         }
  20.     }
  21.  
  22.     FudbalskaEkipa &operator+=(int gol){
  23.         int tmp[10];
  24.         for(int i=1;i<10;i++)
  25.             golovi[i-1] = golovi[i];
  26.         golovi[9] = gol;
  27.         return *this;
  28.     }
  29.  
  30.     virtual int uspeh()=0;
  31.  
  32.     virtual ~FudbalskaEkipa(){}
  33.  
  34.     char *getTrener(){
  35.         return imeTrener;
  36.     }
  37.  
  38.     virtual char *getIme()=0;
  39.  
  40. };
  41.  
  42. class Klub : public FudbalskaEkipa{
  43. private:
  44.         char *ime;
  45.         int tituli;
  46. public:
  47.     Klub(){}
  48.  
  49.     Klub(char *imeTrener, int *golovi, char *ime, int tituli):FudbalskaEkipa(imeTrener,golovi){
  50.         this->ime = new char [strlen(ime)];
  51.         strcpy(this->ime, ime);
  52.         this->tituli = tituli;
  53.     }
  54.  
  55.     ~Klub(){
  56.         delete [] ime;
  57.     }
  58.  
  59.     int uspeh(){
  60.         int i, sum = 0;
  61.         for(i=0;i<10;i++)
  62.         {
  63.             sum += golovi[i];
  64.         }
  65.         sum *= 3;
  66.         sum += (tituli*1000);
  67.         return sum;
  68.     }
  69.  
  70.     char *getIme(){
  71.         return ime;
  72.     }
  73.  
  74.     bool operator>(Klub &k){
  75.         if(uspeh() > k.uspeh())
  76.             return true;
  77.         else return false;
  78.     }
  79. };
  80.  
  81. class Reprezentacija : public FudbalskaEkipa{
  82. private:
  83.         char *ime;
  84.         int brNastapi;
  85. public:
  86.     Reprezentacija(){}
  87.  
  88.     Reprezentacija(char *imeTrener, int *golovi, char *ime, int brNastapi):FudbalskaEkipa(imeTrener, golovi){
  89.         this->ime = new char (strlen(ime));
  90.         strcpy(this->ime, ime);
  91.         this->brNastapi = brNastapi;
  92.     }
  93.  
  94.     ~Reprezentacija(){
  95.         delete [] ime;
  96.     }
  97.  
  98.     int uspeh(){
  99.         int i, sum = 0;
  100.         for(int i=0;i<10;i++)
  101.         {
  102.             sum += golovi[i];
  103.         }
  104.         sum *= 3;
  105.         sum += (brNastapi*50);
  106.         return sum;
  107.     }
  108.  
  109.     char *getIme(){
  110.         return ime;
  111.     }
  112.  
  113.     bool operator>(Reprezentacija &r){
  114.         if(uspeh() > r.uspeh())
  115.             return true;
  116.         else return false;
  117.     }
  118. };
  119.  
  120. ostream &operator<<(ostream &out, FudbalskaEkipa &e){
  121.     FudbalskaEkipa *tmp = &e;
  122.  
  123.     out << tmp->getIme() <<"\n"<<tmp->getTrener()<<"\n"<<tmp->uspeh()<< endl;
  124.     return out;
  125. }
  126.  
  127. void najdobarTrener(FudbalskaEkipa **niza,int n){
  128.     int max=0;
  129.  
  130.     for(int i=0;i<n;i++)
  131.     {
  132.         if(niza[i]->uspeh() > niza[max]->uspeh())
  133.             max = i;
  134.     }
  135.     cout << *niza[max];
  136. }
  137.  
  138.  
  139.  
  140. int main() {
  141.     int n;
  142.     cin >> n;
  143.     FudbalskaEkipa **ekipi = new FudbalskaEkipa*[n];
  144.     char coach[100];
  145.     int goals[10];
  146.     char x[100];
  147.     int tg;
  148.     for (int i = 0; i < n; ++i) {
  149.         int type;
  150.         cin >> type;
  151.         cin.getline(coach, 100);
  152.         cin.getline(coach, 100);
  153.         for (int j = 0; j < 10; ++j) {
  154.             cin >> goals[j];
  155.         }
  156.         cin.getline(x, 100);
  157.         cin.getline(x, 100);
  158.         cin >> tg;
  159.         if (type == 0) {
  160.             ekipi[i] = new Klub(coach, goals, x, tg);
  161.         } else if (type == 1) {
  162.             ekipi[i] = new Reprezentacija(coach, goals, x, tg);
  163.         }
  164.     }
  165.     cout << "===== SITE EKIPI =====" << endl;
  166.     for (int i = 0; i < n; ++i) {
  167.         cout << *ekipi[i];
  168.     }
  169.     cout << "===== DODADI GOLOVI =====" << endl;
  170.     for (int i = 0; i < n; ++i) {
  171.         int p;
  172.         cin >> p;
  173.         cout << "dodavam golovi: " << p << endl;
  174.         *ekipi[i] += p;
  175.     }
  176.     cout << "===== SITE EKIPI =====" << endl;
  177.     for (int i = 0; i < n; ++i) {
  178.         cout << *ekipi[i];
  179.     }
  180.     cout << "===== NAJDOBAR TRENER =====" << endl;
  181.     najdobarTrener(ekipi, n);
  182.     for (int i = 0; i < n; ++i) {
  183.         delete ekipi[i];
  184.     }
  185.     delete [] ekipi;
  186.     return 0;
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement