Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class NBAPlayer { //Да се дефинира класа NBAPlayer за која ќе се чуваат:
- protected:
- char * ime; //динамички алоцирана низа од карактери за името на играчот
- char tim[40]; //низа од максимум 40 карактери за тимот во кој играчот моментално настапува
- double poeni; //просечен број на поени на играчот оваа сезона (double)
- double asistencii; //просечен број на асистенции на играчот оваа сезона (double)
- double skokovi; //просечен број на скокови на играчот оваа сезона (double)
- public: //За потребите на класата да се дефинираат:
- NBAPlayer(){
- ime=new char[0];
- strcpy(ime,"");
- strcpy(tim,"");
- poeni=0.0;
- asistencii=0.0;
- skokovi=0.0;
- }//default конструктор и
- NBAPlayer(char * ime, char * tim, double poeni, double asistencii, double skokovi) { //конструктор со аргументи
- this->ime = new char[strlen(ime)+1];
- strcpy(this->ime, ime);
- strcpy(this->tim, tim);
- this->poeni=poeni;
- this->asistencii=asistencii;
- this->skokovi=skokovi;
- }
- NBAPlayer(const NBAPlayer &n) { //copy constructor
- this-> ime = new char [strlen (n.ime) + 1];
- strcpy(this->ime, n.ime);
- strcpy(this->tim, n.tim);
- this->poeni=n.poeni;
- this->asistencii=n.asistencii;
- this->skokovi=n.skokovi;
- }
- NBAPlayer &operator=(const NBAPlayer &n) { //и оператор =
- if (this!=&n)
- {
- delete ime;
- this-> ime = new char [strlen (n.ime) + 1];
- strcpy(this->ime, n.ime);
- strcpy(this->tim, n.tim);
- this->poeni=n.poeni;
- this->asistencii=n.asistencii;
- this->skokovi=n.skokovi;
- }
- return *this;
- }
- ~NBAPlayer(){ //деструктор
- delete [] ime;
- }
- double rating() { //метод rating() кој го враќа рејтингот на кошаркарот кој се пресметува како:
- return (poeni*0.45 + asistencii*0.3 + skokovi*0.25);
- }//45% од поените + 30% од асистенциите + 25% од скоковите
- void print() { //метод print() кој го печати играчот во следниот формат:
- cout<<ime<<" - "<<tim<<endl; //Име - тим
- cout<<"Points: "<<poeni<<endl; //Points: поени
- cout<<"Assists: "<<asistencii<<endl; //Assists: асистенции
- cout<<"Rebounds: "<<skokovi<<endl; //Rebounds: скокови
- cout<<"Rating: "<<rating()<<endl; //Rating: рејтинг
- }
- };
- class AllStarPlayer : public NBAPlayer { //Од претходната класа NBAPlayer да се изведе класата AllStarPlayer
- private: // за која дополнително ќе се чуваат и:
- double poenii; //просечен број на поени на играчот од All Star натпреварите (double)
- double asistenciii; //просечен број на асистенции на играчот од All Star натпреварите (double)
- double skokovii; //просечен број на скокови на играчот од All Star натпреварите (double)
- public: //За потребите на класата да се дефинираат:
- AllStarPlayer(){
- this->poenii=0.0;
- this->asistenciii=0.0;
- this->skokovii=0.0;
- } //default конструктор
- AllStarPlayer(const NBAPlayer &n, double poenii, double asistenciii, double skokovii) : NBAPlayer(n) {
- this->poenii=poenii;
- this->asistenciii=asistenciii;
- this->skokovii=skokovii;
- } //конструктор кој прима објект од NBAPlayer и плус додатните информации (погледни main)
- AllStarPlayer(char * ime, char * tim, double poeni, double asistencii, double skokovi, double poenii, double asistenciii, double skokovii) : NBAPlayer (ime, tim, poeni, asistencii, skokovi) {
- this->poenii=poenii;
- this->asistenciii=asistenciii;
- this->skokovii=skokovii;
- } // конструктор кој ги прима сите аргументи (погледни main)
- AllStarPlayer(const AllStarPlayer &a) : NBAPlayer(a) { //copy constructor,
- this->poenii=a.poenii;
- this->asistenciii=a.asistenciii;
- this->skokovii=a.skokovii;
- }
- AllStarPlayer &operator=(const AllStarPlayer &a) { //оператор =
- if (this!=&a)
- {
- NBAPlayer::operator=(a);
- this->poenii=a.poenii;
- this->asistenciii=a.asistenciii;
- this->skokovii=a.skokovii;
- }
- return *this;
- }
- double allStarRating(){ //метод allStarRating() кој го враќа рејтингот на кошаркарот од All Star натпреварите
- return (poenii*0.3 + asistenciii*0.4 + skokovii*0.3); //кој се пресметува како:
- } //30% од поените + 40% од асистенциите + 30% од скоковите
- double rating() { //Да се препокријат методите:
- return ((NBAPlayer::rating()+allStarRating())/2);
- } //rating() кој го враќа просекот од обичниот рејтинг на кошаркарот и неговиот All Star рејтинг
- void print() { //print() кој
- NBAPlayer::print(); //покрај основните информации за кошаркарот печати и:
- cout<<"All Star Rating: "<<allStarRating()<<endl; //All Star Rating: рејтингот од All Star натпреварите
- cout<<"New Rating: "<<rating()<<endl; //New Rating: просечниот рејтинг
- }
- ~AllStarPlayer(){} //деструктор
- };
- int main() {
- char name[50];
- char team[40];
- double points;
- double assists;
- double rebounds;
- double allStarPoints;
- double allStarAssists;
- double allStarRebounds;
- NBAPlayer * players = new NBAPlayer[5];
- AllStarPlayer * asPlayers = new AllStarPlayer[5];
- int n;
- cin >> n;
- if (n == 1) {
- cout << "NBA PLAYERS:" << endl;
- cout << "=====================================" << endl;
- for (int i = 0; i < 5; ++i) {
- cin >> name >> team >> points >> assists >> rebounds;
- players[i] = NBAPlayer(name,team,points,assists,rebounds);
- players[i].print();
- }
- }
- else if (n == 2) {
- for (int i=0; i < 5; ++i){
- cin >> name >> team >> points >> assists >> rebounds;
- cin >> allStarPoints >> allStarAssists >> allStarRebounds;
- players[i] = NBAPlayer(name,team,points,assists,rebounds);
- asPlayers[i] = AllStarPlayer(players[i],allStarPoints,allStarAssists,allStarRebounds);
- }
- cout << "NBA PLAYERS:" << endl;
- cout << "=====================================" << endl;
- for (int i=0; i < 5; ++i)
- players[i].print();
- cout << "ALL STAR PLAYERS:" << endl;
- cout << "=====================================" << endl;
- for (int i=0; i < 5; ++i)
- asPlayers[i].print();
- }
- else if (n == 3) {
- for (int i=0; i < 5; ++i){
- cin >> name >> team >> points >> assists >> rebounds;
- cin >> allStarPoints >> allStarAssists >> allStarRebounds;
- asPlayers[i] = AllStarPlayer(name, team, points, assists, rebounds,
- allStarPoints,allStarAssists,allStarRebounds);
- }
- cout << "ALL STAR PLAYERS:" << endl;
- cout << "=====================================" << endl;
- for (int i=0; i < 5; ++i)
- asPlayers[i].print();
- }
- delete [] players;
- delete [] asPlayers;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement