Advertisement
Guest User

Untitled

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