Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Zichara
- {
- char* mesto;
- int cena;
- public:
- Zichara()
- {
- mesto=new char[0];
- }
- Zichara(char *c, int n)
- {
- mesto=new char[strlen(c)+1];
- strcpy(mesto,c);
- cena=n;
- }
- Zichara(const Zichara &rhs)
- {
- mesto=new char[strlen(rhs.mesto)+1];
- strcpy(mesto,rhs.mesto);
- cena=rhs.cena;
- }
- Zichara &operator=(const Zichara &rhs)
- {
- delete[] mesto;
- mesto=new char[strlen(rhs.mesto)+1];
- strcpy(mesto,rhs.mesto);
- cena=rhs.cena;
- return *this;
- }
- int getCena()
- {
- return cena;
- }
- ~Zichara()
- {
- delete[] mesto;
- }
- };
- class PlaninarskiDom
- {
- char ime[15];
- int ceniPoSezoni[2];
- char klasa;
- bool imaZichara;
- Zichara* zichara;
- public:
- PlaninarskiDom(){}
- PlaninarskiDom(char *i, int *c, char k)
- {
- strcpy(ime,i);
- for(int i=0;i<2;i++)
- ceniPoSezoni[i]=c[i];
- klasa=k;
- }
- PlaninarskiDom &operator=(const PlaninarskiDom &rhs)
- {
- strcpy(ime, rhs.ime);
- for(int i=0;i<2;i++)
- ceniPoSezoni[i]=rhs.ceniPoSezoni[i];
- klasa=rhs.klasa;
- if(rhs.imaZichara)
- {
- imaZichara=true;
- zichara = new Zichara(*rhs.zichara);
- }
- return *this;
- }
- void setZichara(const Zichara &rhs)
- {
- imaZichara=true;
- zichara=new Zichara(rhs);
- }
- PlaninarskiDom &operator--()
- {
- if(this->klasa!='F')
- ++this->klasa;
- return *this;
- }
- friend ostream &operator<<(ostream &output, const PlaninarskiDom &rhs)
- {
- output<<rhs.ime<<" klasa:"<<rhs.klasa;
- if(rhs.imaZichara)
- output<<" so Zichara";
- output<<endl;
- return output;
- }
- void presmetajDnevenPrestoj(const int &den, const int &mesec, int &cena)
- {
- cena=0;
- if(mesec<1 || mesec>12 || den<1 || den>31)
- throw 1;
- if(mesec>=4&&mesec<=8)
- cena+=ceniPoSezoni[0];
- else
- cena+=ceniPoSezoni[1];
- if(imaZichara)
- cena+=zichara->getCena();
- }
- bool operator<=(char znak)
- {
- return klasa>=znak;
- }
- ~PlaninarskiDom()
- {
- if(imaZichara)
- delete zichara;
- }
- };
- int main(){
- PlaninarskiDom p; //креирање на нов објект од класата планинарски дом
- //во следниот дел се вчитуваат информации за планинарскиот дом
- char imePlaninarskiDom[15],mestoZichara[30],klasa;
- int ceni[12];
- int dnevnakartaZichara;
- bool daliZichara;
- cin>>imePlaninarskiDom;
- for (int i=0;i<2;i++) cin>>ceni[i];
- cin>>klasa;
- cin>>daliZichara;
- //во следниот дел се внесуваат информации и за жичарата ако постои
- if (daliZichara) {
- cin>>mestoZichara>>dnevnakartaZichara;
- PlaninarskiDom pom(imePlaninarskiDom,ceni,klasa);
- Zichara r(mestoZichara,dnevnakartaZichara);
- pom.setZichara(r);
- p=pom;
- }
- else{
- PlaninarskiDom *pok=new PlaninarskiDom(imePlaninarskiDom,ceni,klasa);
- p=*pok;
- }
- //се намалува класата на планинарскиот дом за 2
- --p;
- --p;
- int cena;
- int den,mesec;
- cin>>den>>mesec;
- try{
- p.presmetajDnevenPrestoj(den,mesec,cena); //тука се користи функцијата presmetajDnevenPrestoj
- cout<<"Informacii za PlaninarskiDomot:"<<endl;
- cout<<p;
- if (p<='D')
- cout<<"Planinarskiot dom za koj se vneseni informaciite ima klasa poniska ili ista so D\n";
- cout<<"Cenata za "<<den<<"."<<mesec<<" e "<<cena; //се печати цената за дадениот ден и месец
- }
- catch (int){
- cout<<"Mesecot ili denot e greshno vnesen!";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement