Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Воз Problem 8 (2 / 4)
- #include <iostream>
- #include <cstring>
- #include <string.h>
- using namespace std;
- class Patnik{
- private:
- char ime[100];
- int klasa;
- bool velosiped;
- public:
- Patnik(char ime[100]="", int klasa=0, bool velosiped=false){
- strcpy(this->ime, ime);
- this->klasa = klasa;
- this->velosiped = velosiped;
- }
- friend ostream& operator<<(ostream& outStream, Patnik& other){
- outStream << other.ime << "\n" << other.klasa << "\n" << other.velosiped << endl;
- return outStream;
- }
- bool getVelosiped(){return this->velosiped;}
- int getKlasa(){return this->klasa;}
- ~Patnik(){}
- };
- class Voz{
- private:
- char krajnaDestinacija[100];
- Patnik* patnici;
- int brojPatnici, dozvoleniVelosipedi;
- public:
- Voz(char *krajnaDestinacija, Patnik* patnici, int brojPatnici, int dozvoleniVelosipedi){
- strcpy(this->krajnaDestinacija, krajnaDestinacija);
- this->patnici = new Patnik[brojPatnici + 1];
- for(int i = 0; i < brojPatnici; i++){
- this->patnici[i] = patnici[i];
- }
- this->brojPatnici = brojPatnici;
- this->dozvoleniVelosipedi = dozvoleniVelosipedi;
- }
- Voz(char *krajnaDestinacija, int dozvoleniVelosipedi){
- strcpy(this->krajnaDestinacija, krajnaDestinacija);
- this->dozvoleniVelosipedi = dozvoleniVelosipedi;
- this->patnici = NULL;
- this->brojPatnici = 0;
- }
- friend ostream& operator <<(ostream& outStream, Voz& other){
- outStream << other.krajnaDestinacija << endl;
- for(int i = 0; i < other.brojPatnici; i++){
- outStream << other.patnici[i] << endl;
- }
- return outStream;
- }
- Voz& operator +=(Patnik& other){
- if((!other.getVelosiped()&&dozvoleniVelosipedi == 0) || dozvoleniVelosipedi !=0){
- Patnik *tmp = new Patnik[brojPatnici + 1];
- for(int i = 0; i < brojPatnici; i++){
- tmp[i] = patnici[i];
- }
- delete[] patnici;
- patnici = new Patnik[brojPatnici + 1];
- for(int i = 0; i < brojPatnici; i++){
- patnici[i] = tmp[i];
- }
- patnici[brojPatnici] = other;
- brojPatnici++;
- return *this;
- }
- return *this;
- }
- void patniciNemaMesto(){
- int brojPrva = 0, brojVtora = 0;
- for(int i = 0; i < brojPatnici; i++){
- if(patnici[i].getKlasa() == 1 && patnici[i].getVelosiped())
- brojPrva++;
- else if(patnici[i].getKlasa() == 2 && patnici[i].getVelosiped())
- brojVtora++;
- }
- if(brojPrva >= dozvoleniVelosipedi){
- brojPrva -= dozvoleniVelosipedi;
- }
- else if(brojPrva < dozvoleniVelosipedi){
- dozvoleniVelosipedi -= brojPrva;
- brojPrva = 0;
- if(brojVtora >= dozvoleniVelosipedi){
- brojVtora -= dozvoleniVelosipedi;
- }
- else if(brojVtora < dozvoleniVelosipedi){
- brojVtora = 0;
- }
- }
- cout << "Brojot na patnici od 1-va klasa koi ostanale bez mesto e: " << brojPrva << endl;
- cout << "Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: " << brojVtora << endl;
- }
- };
- int main()
- {
- Patnik p;
- char ime[100], destinacija[100];
- int n;
- bool velosiped;
- int klasa;
- int maxv;
- cin >> destinacija >> maxv;
- cin >> n;
- Voz v(destinacija, maxv);
- //cout<<v<<endl;
- for (int i = 0; i < n; i++){
- cin >> ime >> klasa >> velosiped;
- Patnik p(ime, klasa, velosiped);
- //cout<<p<<endl;
- v += p;
- }
- cout << v;
- v.patniciNemaMesto();
- return 0;
- }
Add Comment
Please, Sign In to add comment