Advertisement
196040

OOP labs 6 NBA

May 4th, 2020
1,010
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.00 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. class NBAPlayer {  //Да се дефинира класа NBAPlayer за која ќе се чуваат:
  5. protected:
  6. char * ime; //динамички алоцирана низа од карактери за името на играчот
  7. char tim[40]; //низа од максимум 40 карактери за тимот во кој играчот моментално настапува
  8.     double poeni; //просечен број на поени на играчот оваа сезона (double)
  9.     double asistencii; //просечен број на асистенции на играчот оваа сезона (double)
  10.     double skokovi; //просечен број на скокови на играчот оваа сезона (double)
  11.     public: //За потребите на класата да се дефинираат:
  12.     NBAPlayer(){
  13.     ime=new char[0];
  14.         strcpy(ime,"");
  15.         strcpy(tim,"");
  16.         poeni=0.0;
  17.         asistencii=0.0;
  18.         skokovi=0.0;
  19.     }//default конструктор и
  20.     NBAPlayer(char * ime, char * tim, double poeni, double asistencii, double skokovi) { //конструктор со аргументи
  21.      this->ime = new char[strlen(ime)+1];  
  22.         strcpy(this->ime, ime);
  23.         strcpy(this->tim, tim);
  24.         this->poeni=poeni;
  25.         this->asistencii=asistencii;
  26.         this->skokovi=skokovi;
  27.     }
  28.     NBAPlayer(const NBAPlayer &n) { //copy constructor
  29.          this-> ime = new char [strlen (n.ime) + 1];
  30.         strcpy(this->ime, n.ime);
  31.         strcpy(this->tim, n.tim);
  32.         this->poeni=n.poeni;
  33.         this->asistencii=n.asistencii;
  34.         this->skokovi=n.skokovi;
  35.     }
  36.     NBAPlayer &operator=(const NBAPlayer &n) { //и оператор =
  37.         if (this!=&n)
  38.         {
  39.             delete ime;
  40.                  this-> ime = new char [strlen (n.ime) + 1];
  41.         strcpy(this->ime, n.ime);
  42.                 strcpy(this->tim, n.tim);
  43.         this->poeni=n.poeni;
  44.         this->asistencii=n.asistencii;
  45.         this->skokovi=n.skokovi;
  46.         }
  47.         return *this;
  48.     }
  49.     ~NBAPlayer(){  //деструктор
  50.     delete [] ime;
  51.      }
  52.     double rating() { //метод rating() кој го враќа рејтингот на кошаркарот кој се пресметува како:
  53.      return (poeni*0.45 + asistencii*0.3 + skokovi*0.25);
  54.     }//45% од поените + 30% од асистенциите + 25% од скоковите
  55.     void print() { //метод print() кој го печати играчот во следниот формат:
  56.         cout<<ime<<" - "<<tim<<endl; //Име - тим
  57. cout<<"Points: "<<poeni<<endl; //Points: поени
  58. cout<<"Assists: "<<asistencii<<endl; //Assists: асистенции
  59. cout<<"Rebounds: "<<skokovi<<endl; //Rebounds: скокови
  60. cout<<"Rating: "<<rating()<<endl; //Rating: рејтинг
  61.     }
  62. };
  63. class AllStarPlayer : public NBAPlayer { //Од претходната класа NBAPlayer да се изведе класата AllStarPlayer
  64. private:  // за која дополнително ќе се чуваат и:
  65. double poenii; //просечен број на поени на играчот од All Star натпреварите (double)
  66. double asistenciii; //просечен број на асистенции на играчот од All Star натпреварите (double)
  67. double skokovii; //просечен број на скокови на играчот од All Star натпреварите (double)
  68. public: //За потребите на класата да се дефинираат:
  69.     AllStarPlayer(){
  70.     this->poenii=0.0;
  71.     this->asistenciii=0.0;
  72.     this->skokovii=0.0;
  73.     } //default конструктор
  74.     AllStarPlayer(const NBAPlayer &n, double poenii, double asistenciii, double skokovii) : NBAPlayer(n) {
  75.         this->poenii=poenii;
  76.         this->asistenciii=asistenciii;
  77.         this->skokovii=skokovii;
  78.     }  //конструктор кој прима објект од NBAPlayer и плус додатните информации (погледни main)
  79.  AllStarPlayer(char * ime, char * tim, double poeni, double asistencii, double skokovi, double poenii, double asistenciii, double skokovii) : NBAPlayer (ime, tim, poeni, asistencii, skokovi) {
  80.      this->poenii=poenii;
  81.         this->asistenciii=asistenciii;
  82.         this->skokovii=skokovii;
  83.     } // конструктор кој ги прима сите аргументи (погледни main)
  84.     AllStarPlayer(const AllStarPlayer &a) : NBAPlayer(a) { //copy constructor,
  85.      this->poenii=a.poenii;
  86.         this->asistenciii=a.asistenciii;
  87.         this->skokovii=a.skokovii;
  88.     }
  89.      AllStarPlayer &operator=(const AllStarPlayer &a) { //оператор =
  90.         if (this!=&a)
  91.             {  
  92.         NBAPlayer::operator=(a);
  93.         this->poenii=a.poenii;
  94.         this->asistenciii=a.asistenciii;
  95.         this->skokovii=a.skokovii;
  96.         }        
  97.          return *this;
  98.      }
  99.          double allStarRating(){ //метод allStarRating() кој го враќа рејтингот на кошаркарот од All Star натпреварите
  100.          return (poenii*0.3 + asistenciii*0.4 + skokovii*0.3); //кој се пресметува како:
  101.          } //30% од поените + 40% од асистенциите + 30% од скоковите
  102.          double rating() { //Да се препокријат методите:
  103.              return ((NBAPlayer::rating()+allStarRating())/2);
  104.          } //rating() кој го враќа просекот од обичниот рејтинг на кошаркарот и неговиот All Star рејтинг
  105.     void print() { //print() кој
  106.        NBAPlayer::print(); //покрај основните информации за кошаркарот печати и:
  107.              cout<<"All Star Rating: "<<allStarRating()<<endl; //All Star Rating: рејтингот од All Star натпреварите
  108.              cout<<"New Rating: "<<rating()<<endl; //New Rating: просечниот рејтинг
  109.          }        
  110.     ~AllStarPlayer(){}  //деструктор
  111.      };
  112. int main() {
  113.   char name[50];
  114.   char team[40];
  115.   double points;
  116.   double assists;
  117.   double rebounds;
  118.   double allStarPoints;
  119.   double allStarAssists;
  120.   double allStarRebounds;
  121.   NBAPlayer * players = new NBAPlayer[5];
  122.   AllStarPlayer * asPlayers = new AllStarPlayer[5];
  123.   int n;
  124.   cin >> n;
  125.   if (n == 1) {
  126.     cout << "NBA PLAYERS:" << endl;
  127.     cout << "=====================================" << endl;
  128.     for (int i = 0; i < 5; ++i) {
  129.       cin >> name >> team >> points >> assists >> rebounds;
  130.       players[i] = NBAPlayer(name,team,points,assists,rebounds);
  131.       players[i].print();
  132.     }
  133.   }
  134.   else if (n == 2) {
  135.     for (int i=0; i < 5; ++i){
  136.       cin >> name >> team >> points >> assists >> rebounds;
  137.       cin >> allStarPoints >> allStarAssists >> allStarRebounds;
  138.       players[i] = NBAPlayer(name,team,points,assists,rebounds);
  139.       asPlayers[i] = AllStarPlayer(players[i],allStarPoints,allStarAssists,allStarRebounds);
  140.     }
  141.     cout << "NBA PLAYERS:" << endl;
  142.     cout << "=====================================" << endl;
  143.     for (int i=0; i < 5; ++i)
  144.       players[i].print();
  145.     cout << "ALL STAR PLAYERS:" << endl;
  146.     cout << "=====================================" << endl;
  147.     for (int i=0; i < 5; ++i)
  148.       asPlayers[i].print();
  149.     }
  150.     else if (n == 3) {
  151.       for (int i=0; i < 5; ++i){
  152.         cin >> name >> team >> points >> assists >> rebounds;
  153.         cin >> allStarPoints >> allStarAssists >> allStarRebounds;
  154.         asPlayers[i] = AllStarPlayer(name, team, points, assists, rebounds,
  155.                                      allStarPoints,allStarAssists,allStarRebounds);
  156.       }
  157.       cout << "ALL STAR PLAYERS:" << endl;
  158.       cout << "=====================================" << endl;
  159.       for (int i=0; i < 5; ++i)
  160.         asPlayers[i].print();
  161.     }
  162.     delete [] players;
  163.     delete [] asPlayers;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement