prometheus800

ООП: Воз

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