MNikolovski

ООП Лаб 5 - Автомобил

Mar 26th, 2017
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class Automobile {
  8. private:
  9.     char *marka;
  10.     int *registracija;
  11.     int maximumBrzina;
  12. public:
  13.     Automobile() {
  14.         marka = new char[1];
  15.         strcpy(marka, " ");
  16.         registracija = new int[1];
  17.         registracija[0] = 0;
  18.     }
  19.     Automobile(char *marka, int registracija[], int maximumBrzina) {
  20.         this->marka = new char[strlen(marka) + 1];
  21.         strcpy(this->marka, marka);
  22.         this->registracija = new int[5];
  23.         for(int i = 0; i < 5; i++)
  24.             this->registracija[i] = registracija[i];
  25.         this->maximumBrzina = maximumBrzina;
  26.     }
  27.     Automobile(const Automobile &car) {
  28.         this->marka = new char[strlen(car.marka) + 1];
  29.         strcpy(this->marka, car.marka);
  30.         this->registracija = new int[5];
  31.         for(int i = 0; i < 5; i++) {
  32.             this->registracija[i] = car.registracija[i];
  33.         }
  34.         this->maximumBrzina = car.maximumBrzina;
  35.     }
  36.     ~Automobile() {
  37.         delete [] marka;
  38.         delete [] registracija;
  39.     }
  40.  
  41.     int getMaximumBrzina() {
  42.         return maximumBrzina;
  43.     }
  44.  
  45.     Automobile& operator=(const Automobile &car) {
  46.         if(this != &car) {
  47.             delete [] marka;
  48.             marka = new char[strlen(car.marka) + 1];
  49.             strcpy(marka, car.marka);
  50.             delete [] registracija;
  51.             registracija = new int[5];
  52.             for(int i = 0; i < 5; i++)
  53.                 registracija[i] = car.registracija[i];
  54.             maximumBrzina = car.maximumBrzina;
  55.         }
  56.         return *this;
  57.     }
  58.     bool operator==(const Automobile &car) {
  59.         bool isti = true;
  60.         for(int i = 0; i < 5; i++)
  61.             if(registracija[i] != car.registracija[i])
  62.                 return false;
  63.         return true;
  64.     }
  65.     friend ostream& operator<<(ostream &screamAndShout, const Automobile &car) {
  66.         screamAndShout << "Marka\t" << car.marka << "\tRegistracija[ ";
  67.         for(int i = 0; i < 5; i++)
  68.             screamAndShout << car.registracija[i] << " ";
  69.         screamAndShout << "]" << endl;
  70.         return screamAndShout;
  71.     }
  72. };
  73.  
  74. class RentACar {
  75. private:
  76.     char ime[100];
  77.     Automobile *avtomobili;
  78.     int brojNaAvtomobili;
  79. public:
  80.     RentACar(char *ime) {
  81.         strcpy(this->ime, ime);
  82.         avtomobili = new Automobile[1];
  83.         brojNaAvtomobili = 0;
  84.     }
  85.     ~RentACar() {
  86.         delete [] avtomobili;
  87.     }
  88.  
  89.     RentACar& operator=(const RentACar &agencija){
  90.         if(this != &agencija) {
  91.             strcpy(ime, agencija.ime);
  92.             brojNaAvtomobili = agencija.brojNaAvtomobili;
  93.             delete [] avtomobili;
  94.             avtomobili = new Automobile[brojNaAvtomobili];
  95.             for(int i = 0; i < brojNaAvtomobili; i++)
  96.                 avtomobili[i] = agencija.avtomobili[i];
  97.         }
  98.         return *this;
  99.     }
  100.     RentACar& operator+=(const Automobile &newCar) {
  101.         Automobile *temp;
  102.         temp = new Automobile[brojNaAvtomobili + 1];
  103.         for(int i = 0; i < brojNaAvtomobili; i++)
  104.             temp[i] = avtomobili[i];
  105.         temp[brojNaAvtomobili] = newCar;
  106.         delete [] avtomobili;
  107.         avtomobili = temp;
  108.         brojNaAvtomobili++;
  109.         return *this;
  110.     }
  111.  
  112.     RentACar& operator-=(const Automobile &deleteCar) {
  113.         for(int i = 0; i < brojNaAvtomobili; i++)
  114.             if(avtomobili[i] == deleteCar)
  115.                 avtomobili[i] = deleteCar;
  116.         return *this;
  117.     }
  118.  
  119.     void pecatiNadBrzina(int max) {
  120.         cout << ime << endl;
  121.         for(int i = 0; i < brojNaAvtomobili; i++)
  122.             if(avtomobili[i].getMaximumBrzina() > max)
  123.                 cout << avtomobili[i];
  124.     }
  125. };
  126.  
  127.  
  128. int main()
  129. {
  130.    RentACar agencija("FINKI-Car");
  131.    int n;
  132.    cin>>n;
  133.    
  134.    for (int i=0;i<n;i++) {
  135.         char marka[100];
  136.         int registracija[5];
  137.         int maximumBrzina;
  138.    
  139.         cin>>marka;
  140.    
  141.         for (int i=0;i<5;i++)
  142.             cin>>registracija[i];
  143.    
  144.         cin>>maximumBrzina;
  145.    
  146.         Automobile nov=Automobile(marka,registracija,maximumBrzina);
  147.        
  148.         //dodavanje na avtomobil
  149.         agencija+=nov;  
  150.    }
  151.  
  152.     //se cita grehsniot avtmobil, za koj shto avtmobilot so ista registracija treba da se izbrishe
  153.     char marka[100];
  154.     int registracija[5];
  155.     int maximumBrzina;
  156.     cin>>marka;
  157.     for (int i=0;i<5;i++)
  158.     cin>>registracija[i];
  159.     cin>>maximumBrzina;
  160.    
  161.     Automobile greshka=Automobile(marka,registracija,maximumBrzina);
  162.    
  163.     //brishenje na avtomobil
  164.     agencija-=greshka;
  165.    
  166.     agencija.pecatiNadBrzina(150);
  167.    
  168.     return 0;
  169. }
Add Comment
Please, Sign In to add comment