Advertisement
Koki99

FudblaskaEkipa - Втор Колоквиум - Пример

Jun 3rd, 2022
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.43 KB | None | 0 0
  1. Да се имплементира апстрактна класа FudblaskaEkipa во која се чува: (5 поени)
  2.  
  3. име на тренерот на екипата (максимум 100 знаци)
  4. бројот на постигнати голови на последните 10 натпревари, последниот натпревар е на позиција 9, предпоследниот на позиција 8, итн (поле од 10 цели броеви)
  5. Од класата FudblaskaEkipa да се изведат класите Klub и Reprezentacija. За секој клуб дополнително се чува податок за името и бројот на титули што ги има освоено, а за репрезентацијата се чуваат податоци за името на државата и вкупен број на меѓународни настапи. За овие класи да се имплементираат следните методи:
  6.  
  7. соодветен конструктор (5 поени)
  8. оператор << за печатење на стандарден излез во формат [IME_NA_KLUB/DRZHAVA]\n[TRENER]\n[USPEH]\n (5 поени)
  9. преоптоварен оператор+= за додавање на голови од последниот натпревар (внимавајте секогаш се чуваат головите само од последните 10 натпревари) (10 поени)
  10. метод uspeh, за пресметување на успехот на тимот на следниот начин:
  11. За Klub се пресметува како збир од збирот на головите од последните 10 натпревари помножен со 3 и бројот на титули помножен со 1000 (на пр. голови = {2, 0, 1, 3, 2, 0, 1, 4, 2, 3} и број на титули = 3, достигнување = 18 * 3 + 3 * 1000 = 3054)
  12. За Reprezentacija како збир од збирот на головите од последните 10 натпревари помножен со 3 и бројот на меѓународни настапи помножен со 50 (на пр. голови = {2, 0, 1, 3, 2, 0, 1, 4, 2, 3} и број на меѓународни настапи=150, достигнување = 18 * 3 + 150 * 50 = 7554) (10 поени)
  13. преоптоварен оператор > за споредба на две фудбласки екипи од каков било вид (клубови или репрезентации) според успехот (5 поени)
  14. Да се имплементира функција najdobarTrener што на влез прима низа од покажувачи кон FudblaskaEkipa и големина на низата и го печати тимот со најголем успех (10 поени).
  15. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  16. #include <iostream>
  17. #include <cstring>
  18. using namespace std;
  19.  
  20. // vashiot kod ovde
  21. class FudbalskaEkipa
  22. {
  23. protected:
  24.     char trener[100];
  25.     int golovi[10];
  26. public:
  27.     FudbalskaEkipa(char *trener, int *golovi)
  28.     {
  29.         strcpy(this->trener,trener);
  30.         for(int i=0; i<10; i++)
  31.             this->golovi[i]=golovi[i];
  32.     }
  33.     virtual int uspeh()=0;
  34.     FudbalskaEkipa &operator+=(int nov)
  35.     {
  36.         int novi[10];
  37.         for(int i=0; i<9; i++)
  38.             novi[i]=golovi[i+1];
  39.         novi[9]=nov;
  40.         for(int i=0; i<10; i++)
  41.             golovi[i]=novi[i];
  42.         return *this;
  43.     }
  44.     bool operator>(FudbalskaEkipa &f)
  45.     {
  46.         return uspeh()>f.uspeh();
  47.     }
  48.     virtual char* getIme()=0;
  49.     friend ostream &operator<<(ostream &o, FudbalskaEkipa &k)
  50.     {
  51.         o<<k.getIme()<<endl<<k.trener<<endl<<k.uspeh()<<endl;
  52.         return o;
  53.     }
  54.     virtual ~FudbalskaEkipa(){}
  55. };
  56. class Klub: public FudbalskaEkipa
  57. {
  58.  private:
  59.      char ime[100];
  60.      int tituli;
  61.  public:
  62.     Klub(char *trener, int *golovi, char *ime, int tituli):FudbalskaEkipa(trener,golovi)
  63.     {
  64.         strcpy(this->ime,ime);
  65.         this->tituli=tituli;
  66.     }
  67.     int uspeh()
  68.     {
  69.         int g=0;
  70.         for(int i=0; i<10; i++)
  71.         {
  72.             g+=golovi[i];
  73.         }
  74.         return g*3+tituli*1000;
  75.     }
  76.     char *getIme()
  77.     {
  78.         return ime;
  79.     }
  80.    
  81. };
  82. class Reprezentacija: public FudbalskaEkipa
  83. {
  84. private:
  85.     char drzhava[100];
  86.     int nastapi;
  87. public:
  88.     Reprezentacija(char *trener, int *golovi, char *drzhava, int nastapi):FudbalskaEkipa(trener,golovi)
  89.     {
  90.         strcpy(this->drzhava,drzhava);
  91.         this->nastapi=nastapi;
  92.     }
  93.     int uspeh()
  94.     {
  95.         int g=0;
  96.         for(int i=0; i<10; i++)
  97.         {
  98.             g+=golovi[i];
  99.         }
  100.         return g*3+nastapi*50;
  101.     }
  102.     char* getIme()
  103.     {
  104.         return drzhava;
  105.     }
  106. };
  107. void najdobarTrener(FudbalskaEkipa **f, int n)
  108. {
  109.     int max=0, maxI;
  110.     for(int i=0; i<n; i++)
  111.     {
  112.         if(f[i]->uspeh()>max)
  113.         {
  114.             max=f[i]->uspeh();
  115.             maxI=i;
  116.         }
  117.     }
  118.     cout<<*f[maxI];
  119. }
  120.  
  121. int main() {
  122.     int n;
  123.     cin >> n;
  124.     FudbalskaEkipa **ekipi = new FudbalskaEkipa*[n];
  125.     char coach[100];
  126.     int goals[10];
  127.     char x[100];
  128.     int tg;
  129.     for (int i = 0; i < n; ++i) {
  130.         int type;
  131.         cin >> type;
  132.         cin.getline(coach, 100);
  133.         cin.getline(coach, 100);
  134.         for (int j = 0; j < 10; ++j) {
  135.             cin >> goals[j];
  136.         }
  137.         cin.getline(x, 100);
  138.         cin.getline(x, 100);
  139.         cin >> tg;
  140.         if (type == 0) {
  141.             ekipi[i] = new Klub(coach, goals, x, tg);
  142.         } else if (type == 1) {
  143.             ekipi[i] = new Reprezentacija(coach, goals, x, tg);
  144.         }
  145.     }
  146.     cout << "===== SITE EKIPI =====" << endl;
  147.     for (int i = 0; i < n; ++i) {
  148.         cout << *ekipi[i];
  149.     }
  150.     cout << "===== DODADI GOLOVI =====" << endl;
  151.     for (int i = 0; i < n; ++i) {
  152.         int p;
  153.         cin >> p;
  154.         cout << "dodavam golovi: " << p << endl;
  155.         *ekipi[i] += p;
  156.     }
  157.     cout << "===== SITE EKIPI =====" << endl;
  158.     for (int i = 0; i < n; ++i) {
  159.         cout << *ekipi[i];
  160.     }
  161.     cout << "===== NAJDOBAR TRENER =====" << endl;
  162.     najdobarTrener(ekipi, n);
  163.     for (int i = 0; i < n; ++i) {
  164.         delete ekipi[i];
  165.     }
  166.     delete [] ekipi;
  167.     return 0;
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement