Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- using namespace std;
- class OutOfBoundException
- {
- public:
- void pecati()
- {
- cout<<"Brojot na pin kodovi ne moze da go nadmine dozvolenoto"<<endl;
- }
- };
- class Karticka
- {
- protected:
- char smetka[16];
- int pin;
- bool povekjePin;
- public:
- Karticka() {}
- Karticka(char* smetka,int pin)
- {
- strcpy(this->smetka,smetka);
- this->pin=pin;
- this->povekjePin=false;
- }
- // дополниете ја класата
- Karticka(const Karticka &k)
- {
- strcpy(smetka,k.smetka);
- pin=k.pin;
- povekjePin=k.povekjePin;
- }
- const char* getsmetka()
- {
- return smetka;
- }
- virtual int tezinaProbivanje()
- {
- int br=0;
- int _pin=pin;
- while (_pin)
- {
- _pin/=10;
- br++;
- }
- return br;
- }
- int getDopolnitelenPin()
- {
- return povekjePin;
- }
- friend ostream& operator<<(ostream &o, Karticka &k)
- {
- o<<k.smetka<<": "<<k.tezinaProbivanje()<<endl;
- return o;
- }
- };
- class SpecijalnaKarticka: public Karticka
- {
- private:
- int *pinovi;
- int br;
- static int P;
- public:
- SpecijalnaKarticka()
- {
- pinovi=0;
- br=0;
- povekjePin=1;
- }
- SpecijalnaKarticka(char* smetka,int pin): Karticka(smetka,pin)
- {
- pinovi=0;
- br=0;
- povekjePin=1;
- }
- int tezinaProbivanje()
- {
- int brojac=0;
- for (int i=0; i<br; i++)
- {
- int pince=pinovi[i];
- while (pince)
- {
- pince/=10;
- brojac++;
- }
- }
- return Karticka::tezinaProbivanje()+br;
- }
- SpecijalnaKarticka (const SpecijalnaKarticka &s):Karticka(s)
- {
- br=s.br;
- for (int i=0; i<br; i++)
- pinovi[i]=s.pinovi[i];
- }
- SpecijalnaKarticka& operator= (const SpecijalnaKarticka &s)
- {
- if(this==&s)
- return *this;
- Karticka::operator=(s);
- br=s.br;
- delete[]pinovi;
- pinovi=new int [br];
- for (int i=0; i<br; i++)
- pinovi[i]=s.pinovi[i];
- return *this;
- }
- friend ostream& operator<<(ostream &o, SpecijalnaKarticka &k)
- {
- o<<k.smetka<<": "<<k.tezinaProbivanje()<<endl;
- return o;
- }
- SpecijalnaKarticka& operator+=( int pin)
- {
- int brojce=0;
- int pinn=pin;
- while (pinn)
- {
- pinn/=10;
- brojce++;
- }
- if(br>=P)
- return *this;
- int *pom=new int [br+1];
- for (int i=0; i<br; i++)
- pom[i]=pinovi[i];
- delete [] pinovi;
- pom[br++]=pin;
- pinovi=pom;
- return *this;
- }
- int getbr()
- {
- return br;
- }
- static int getP()
- {
- return P;
- }
- } ;
- //вметнете го кодот за SpecijalnaKarticka
- int SpecijalnaKarticka::P=4;
- class Banka
- {
- private:
- char naziv[30];
- Karticka *karticki[20];
- int broj;
- int static limit;
- public:
- Banka(char *naziv, Karticka** karticki,int broj )
- {
- strcpy(this->naziv,naziv);
- for (int i=0; i<broj; i++)
- {
- //ako kartickata ima dopolnitelni pin kodovi
- if (karticki[i]->getDopolnitelenPin())
- {
- this->karticki[i]=new SpecijalnaKarticka(*dynamic_cast<SpecijalnaKarticka*>(karticki[i]));
- }
- else this->karticki[i]=new Karticka(*karticki[i]);
- }
- this->broj=broj;
- }
- ~Banka()
- {
- for (int i=0; i<broj; i++) delete karticki[i];
- }
- static void setLIMIT(int limitt)
- {
- limit=limitt;
- }
- //да се дополни класата
- void pecatiKarticki()
- {
- cout<<"Vo bankata "<<naziv<<" moze da se probijat kartickite:"<<endl;
- for (int i=0; i<broj; i++)
- if(karticki[i]->tezinaProbivanje()<=limit)
- {
- SpecijalnaKarticka *s=new SpecijalnaKarticka ();
- s=dynamic_cast<SpecijalnaKarticka *> (karticki[i]);
- Karticka *k=new Karticka();
- k=dynamic_cast <Karticka *> (karticki[i]);
- if (s)
- cout<<*s;
- else
- cout<<*k;
- }
- }
- void dodadiDopolnitelenPin(char * smetka, int novPin)
- {
- for (int i=0; i<broj; i++)
- {
- if (!strcmp(karticki[i]->getsmetka(),smetka))
- if(karticki[i]->getDopolnitelenPin())
- {
- SpecijalnaKarticka *s=new SpecijalnaKarticka();
- s=dynamic_cast<SpecijalnaKarticka *> (karticki[i]);
- if (s)
- {
- if (s->getP()>s->getbr())
- {
- s->operator+=(novPin);
- //cout<<*s<<endl<<endl;
- }
- }
- }
- }
- }
- };
- int Banka::limit=7;
- int main()
- {
- Karticka **niza;
- int n,m,pin;
- char smetka[16];
- bool daliDopolnitelniPin;
- cin>>n;
- niza=new Karticka*[n];
- for (int i=0; i<n; i++)
- {
- cin>>smetka;
- cin>>pin;
- cin>>daliDopolnitelniPin;
- if (!daliDopolnitelniPin)
- niza[i]=new Karticka(smetka,pin);
- else
- niza[i]=new SpecijalnaKarticka(smetka,pin);
- }
- Banka komercijalna("Komercijalna",niza,n);
- for (int i=0; i<n; i++) delete niza[i];
- delete [] niza;
- cin>>m;
- for (int i=0; i<m; i++)
- {
- cin>>smetka>>pin;
- komercijalna.dodadiDopolnitelenPin(smetka,pin);
- }
- Banka::setLIMIT(5);
- komercijalna.pecatiKarticki();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement