Advertisement
add1ctus

12.Воз

Jun 14th, 2015
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Patnik
  7. {
  8.     char ime[100];
  9.     int klasa;
  10.     bool imaVelosiped;
  11. public:
  12.     Patnik(){}
  13.     Patnik(char *i, int k, bool iv)
  14.     {
  15.         strcpy(ime,i);
  16.         klasa=k;
  17.         imaVelosiped=iv;
  18.     }
  19.     Patnik &operator=(const Patnik &rhs)
  20.     {
  21.         strcpy(this->ime, rhs.ime);
  22.         this->klasa=rhs.klasa;
  23.         this->imaVelosiped=rhs.imaVelosiped;
  24.         return *this;
  25.     }
  26.     friend ostream &operator<<(ostream &out, const Patnik &rhs)
  27.     {
  28.         out<<rhs.ime<<endl<<rhs.klasa<<endl<<rhs.imaVelosiped<<endl;
  29.         return out;
  30.     }
  31.     bool getVelosiped()
  32.     {
  33.         return imaVelosiped;
  34.     }
  35.     int getKlasa()
  36.     {
  37.         return klasa;
  38.     }
  39. };
  40.  
  41. class Voz
  42. {
  43.     char destinacija[100];
  44.     Patnik* patnici;
  45.     int brojNaPatnici;
  46.     int dozvoleniVelosipedi;
  47. public:
  48.     Voz()
  49.     {
  50.         patnici=new Patnik[0];
  51.         brojNaPatnici=0;
  52.     }
  53.     Voz(char *d,int dv)
  54.     {
  55.         patnici=new Patnik[0];
  56.         brojNaPatnici=0;
  57.         strcpy(destinacija,d);
  58.         dozvoleniVelosipedi=dv;
  59.     }
  60.     Voz &operator+=(const Patnik &rhs)
  61.     {
  62.         if(rhs.getVelosiped() && !dozvoleniVelosipedi)
  63.             return *this;
  64.         Patnik* temp = new Patnik[brojNaPatnici];
  65.         for(int i=0;i<brojNaPatnici;i++)
  66.             temp[i]=patnici[i];
  67.         delete[] patnici;
  68.         patnici=new Patnik[brojNaPatnici+1];
  69.         for(int i=0;i<brojNaPatnici;i++)
  70.             patnici[i]=temp[i];
  71.         delete[] temp;
  72.         patnici[brojNaPatnici++]=rhs;
  73.         return *this;
  74.     }
  75.     friend ostream &operator<< (ostream &out, const Voz &rhs)
  76.     {
  77.         out<<rhs.destinacija<<endl;
  78.         for(int i=0;i<rhs.brojNaPatnici;i++)
  79.             out<<rhs.patnici[i];
  80.         return out;
  81.     }
  82.     void patniciNemaMesto()
  83.     {
  84.         int velosipediKlasa[2]={0,0};
  85.         for(int i=0;i<brojNaPatnici;i++)
  86.             if(patnici[i].getVelosiped())
  87.                 velosipediKlasa[patnici[i].getKlasa()-1]++;
  88.         int brojNaMesta=dozvoleniVelosipedi;
  89.         if(velosipediKlasa[0]<=brojNaMesta)
  90.         {
  91.             brojNaMesta-=velosipediKlasa[0];
  92.             cout<<"Brojot na patnici od 1-va klasa koi ostanale bez mesto e: 0"<<endl;
  93.             if(velosipediKlasa[1]<=brojNaMesta)
  94.                 cout<<"Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: 0"<<endl;
  95.             else
  96.                 cout<<"Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: "<<velosipediKlasa[1]-brojNaMesta<<endl;
  97.         }
  98.         else
  99.         {
  100.             cout<<"Brojot na patnici od 1-va klasa koi ostanale bez mesto e: "<<velosipediKlasa[0]-brojNaMesta<<endl;
  101.             cout<<"Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: "<<velosipediKlasa[1]<<endl;
  102.         }
  103.     }
  104. };
  105.  
  106. int main()
  107. {
  108.     Patnik p;
  109.     char ime[100], destinacija[100];
  110.     int n;
  111.     bool velosiped;
  112.     int klasa;
  113.     int maxv;
  114.     cin >> destinacija >> maxv;
  115.     cin >> n;
  116.     Voz v(destinacija, maxv);
  117.     //cout<<v<<endl;
  118.     for (int i = 0; i < n; i++){
  119.         cin >> ime >> klasa >> velosiped;
  120.         Patnik p(ime, klasa, velosiped);
  121.         //cout<<p<<endl;
  122.         v += p;
  123.     }
  124.     cout << v;
  125.     v.patniciNemaMesto();
  126.  
  127.     return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement