SlavkovB

Ракомет OOP Exercises

Jun 5th, 2016 (edited)
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.56 KB | None | 0 0
  1. /* Ракомет Problem 14 (0 / 0)
  2. Да се имплементира класа TimRakomet во која се чуваат податоци за:
  3.  
  4. име на тимот (низа од максимум 30 знаци),
  5. просек на постигнати голови (децимален број).
  6. Од класата TimRakomet да се изведат класите Klub и Reprezentacija. За секој клуб дополнително се чуваат податоци за бројот на титули што ги има освоено (цел број), а за секоја репрезентација низа од 3 цели броја во која се чуваат местата во конечната ранг листа на европско, светско првенство и олимпијада по наведениот редослед. Ако репрезентацијата не учествувала на некое од првенствата, вредноста на соодветниот елемент е нула. (10 поени).
  7.  
  8. Да се имплементираат потребните конструктори, set и get методи (10 поени).
  9.  
  10. Дополнително, да се имплементира метод dostignuvanje, што го пресметува достигнувањето на тимот на следниот начин: (15 поени)
  11.  
  12. За клуб се пресметува како се пресметува како збир од просекот на постигнати голови помножен со 5 и бројот на титули помножен со 50
  13. За репрезентација - како збир од од просекот на постигнати голови помножен со 5 и 60/40/20 ако репрезентацијата освоила едно од првите три места на европско п./светско п./олимпијада. (пр. просек = 30.0, место = {2,0,0}, резултат = 30 * 5 + 40 = 190)
  14. Да се дефинира метод najdobar што на влез прима низа од покажувачи кон тимови и нивниот број и го печати името и достигнувањето на најдобриот тим (тимот со најголемо достигнување) (15 поени).
  15.  
  16. Sample input
  17. 5
  18. Makedonija 28.5
  19. 2 2 0
  20. Metalurg 31.3
  21. 5    
  22. France 34.2
  23. 1 1 1
  24. Vardar 29.2
  25. 5
  26. Germany 28.1
  27. 0 0 1
  28.  
  29. Sample output
  30. Metalurg
  31. 406.5
  32. */
  33.  
  34. //CODE//
  35.  
  36.  
  37.  
  38. class TimRakomet{
  39. protected:
  40.     char ime[30];
  41.     float golovi;
  42. public:
  43.         TimRakomet(const char *ime = " ", float golovi = 0.0){
  44.     strcpy(this -> ime, ime);
  45.     this -> golovi = golovi;
  46.     }
  47.     virtual float dostignuvanje() = 0;
  48.     virtual ~TimRakomet(){}
  49.     char* getIme(){return this -> ime;}
  50. };
  51. class Klub: public TimRakomet{
  52.     int tituli;
  53. public:
  54.         Klub(const char *ime = " ", float golovi = 0.0, int tituli = 0) : TimRakomet(ime, golovi) {
  55.     this -> tituli = tituli;}
  56.     float dostignuvanje(){return (golovi * 5 + tituli * 50);}
  57. };
  58. class Reprezentacija: public TimRakomet{
  59.     int rang[3];
  60. public:
  61.     Reprezentacija(const char *ime = " ", float golovi = 0.0, int rang[] = NULL) : TimRakomet(ime, golovi) {
  62.         for(int i = 0; i < 3; i++){
  63.         this -> rang[i] = rang[i];}
  64.     }
  65.         float dostignuvanje()
  66.     {
  67.         float suma = 0.0;
  68.         for(int i = 0; i < 3; i++)
  69.         {
  70.             if(rang[i] == 1)   suma += 60;
  71.             else if(rang[i] == 2)  suma += 40;
  72.             else if(rang[i] == 3) suma += 20;
  73.         }
  74.         return (golovi * 5) + suma;
  75.     }
  76. };
  77. void najdobar(TimRakomet ** timovi, int n){
  78.     int tmp = 0;
  79.     int max = timovi[0] -> dostignuvanje();
  80.     for(int i = 0; i < n; i++)
  81.     {
  82.         if(timovi[i] -> dostignuvanje() > max)
  83.         {
  84.             max = timovi[i] -> dostignuvanje();
  85.             tmp = i;
  86.         }
  87.     }
  88.     cout<<timovi[tmp] -> getIme()<<endl;
  89.     cout<<timovi[tmp] -> dostignuvanje();
  90.  
  91. };
  92.  
  93. int main() {
  94.     int n;
  95.     cin >> n;
  96.     TimRakomet** timovi = new TimRakomet*[n];
  97.     for(int i = 0; i < n; ++i) {
  98.         char ime[30];
  99.         float prosekGolovi;
  100.         cin >> ime >> prosekGolovi;
  101.         if(i % 2) {
  102.             int tituli;
  103.             cin >> tituli;
  104.             timovi[i] = new Klub(ime, prosekGolovi, tituli);
  105.         } else {
  106.             int rank[] = {0, 0, 0};
  107.             cin >> rank[0] >> rank[1] >> rank[2];
  108.             timovi[i] = new Reprezentacija(ime, prosekGolovi, rank);
  109.         }
  110.     }
  111.  
  112.     najdobar(timovi, n);
  113.  
  114.     for(int i = 0; i < n; ++i) {
  115.         delete timovi[i];
  116.     }
  117.     delete [] timovi;
  118.     return 0;
  119. }
Add Comment
Please, Sign In to add comment