Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- #include <cmath>
- using namespace std;
- class Patnik{
- private:
- char ime[100];
- int klasa;
- bool velosiped;
- public:
- Patnik(char *ime="",int klasa=1,bool velosiped=true){
- strcpy(this->ime,ime);
- this->klasa=klasa;
- this->velosiped=velosiped;
- }
- void pecati(){
- if(velosiped){
- cout<<ime<<endl;
- cout<<klasa<<endl;
- cout<<"1"<<endl;
- cout<<endl;
- }
- else{
- cout<<ime<<endl;
- cout<<klasa<<endl;
- cout<<"0"<<endl;
- cout<<endl;
- }
- }
- friend class Voz;
- };
- class Voz{
- private:
- char kd[100];
- Patnik *patnici;
- int brpatnici;
- int maxv;
- public:
- Voz(char *kd,int maxv=0,int brpatnici=0){
- strcpy(this->kd,kd);
- this->maxv=maxv;
- this->brpatnici=brpatnici;
- this->patnici=new Patnik[brpatnici];
- }
- ~Voz(){
- delete [] patnici;
- }
- Voz(const Voz & p1){
- strcpy(this->kd,p1.kd);
- this->maxv=p1.maxv;
- this->brpatnici=p1.brpatnici;
- this->patnici=new Patnik[p1.brpatnici];
- for(int i=0;i<p1.brpatnici;i++)
- patnici[i]=p1.patnici[i];
- }
- Voz& operator=(const Voz & p1){
- if(this!=&p1){
- strcpy(this->kd,p1.kd);
- this->maxv=p1.maxv;
- this->brpatnici=p1.brpatnici;
- delete [] patnici;
- this->patnici=new Patnik[p1.brpatnici];
- for(int i=0;i<p1.brpatnici;i++)
- patnici[i]=p1.patnici[i];
- }
- return *this;
- }
- void pecati(){
- cout<<kd<<endl;
- for(int i=0;i<brpatnici;i++)
- patnici[i].pecati();
- }
- Voz& dodadiPatnik(Patnik p1){
- if(p1.velosiped){
- int vkvel=0;
- for(int i=0;i<brpatnici;i++){
- if(patnici[i].velosiped)
- vkvel++;
- }
- if(vkvel<maxv){
- Patnik *tmp = new Patnik[brpatnici+1];
- for(int i=0;i<brpatnici;i++)
- {
- tmp[i]=patnici[i];
- }
- tmp[brpatnici]=p1;
- brpatnici++;
- delete [] patnici;
- patnici=tmp;
- }
- return *this;
- }
- else
- {
- Patnik *tmp = new Patnik[brpatnici+1];
- for(int i=0;i<brpatnici;i++)
- {
- tmp[i]=patnici[i];
- }
- tmp[brpatnici]=p1;
- brpatnici++;
- delete [] patnici;
- patnici=tmp;
- }
- return *this;
- }
- void patniciNemaMesto(){
- int prva=0;
- int vtora=0;
- int treta=0;
- int c0;
- bool c1;
- for(int i=0; i<brpatnici; i++)
- {
- c0=patnici[i].klasa;
- c1 =patnici[i].velosiped;
- if(c1&&c0==1)prva++;
- else if(c1&&c0==2)vtora++;
- else treta++;
- }
- if(maxv==0){
- cout<<"Brojot na patnici od 1-va klasa koi ostanale bez mesto e: 0\n";
- cout<<"Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: 0\n";
- }
- else{
- if(maxv>=prva)
- cout<<"Brojot na patnici od 1-va klasa koi ostanale bez mesto e: 0\n";
- else
- cout<<"Brojot na patnici od 1-va klasa koi ostanale bez mesto e: "<<prva-maxv<<"\n";
- maxv-=prva;
- if(maxv>0)
- if(maxv>=vtora)
- cout<<"Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: 0\n";
- else
- cout<<"Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: "<<vtora-maxv<<"\n";
- else
- cout<<"Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: "<<vtora<<"\n";
- }
- }
- };
- 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.dodadiPatnik(p);
- }
- v.pecati();
- v.patniciNemaMesto();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement