Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- using namespace std;
- class Zichara
- {
- private:
- char *mesto;
- int cena;
- public:
- Zichara (const char *m="",int c=0)
- {
- mesto=new char [strlen(m)+1];
- for(int i=0; i<strlen(m)+1; i++)
- mesto[i]=m[i];
- cena=c;
- }
- int getCena()
- {
- return cena;
- }
- };
- class PlaninarskiDom
- {
- private:
- char ime [15];
- int ceni[2];
- char klasa;
- bool ima;
- Zichara *zichara;
- public:
- PlaninarskiDom () {}
- PlaninarskiDom(const char *i,int *c,char k)
- {
- strcpy(ime,i);
- for(int i=0; i<2; i++)
- ceni[i]=c[i];
- klasa=k;
- ima=false;
- }
- PlaninarskiDom & operator--()
- {
- if(klasa!='F')
- klasa++;
- return *this;
- }
- friend ostream& operator << (ostream &x,const PlaninarskiDom &p)
- {
- x<<p.ime<<" klasa:"<<p.klasa;
- if(p.ima)
- x<<" so Zichara";
- x<<endl;
- return x;
- }
- bool operator <= (char c)
- {
- return klasa>=c;
- }
- void setZichara (Zichara &z)
- {
- zichara=&z;
- ima=true;
- }
- void presmetajDnevenPrestoj (int den,int mesec,int &cena)
- {
- if(den <1 || den >31)
- throw 214234;
- if(mesec <1 || mesec > 12)
- throw 423423;
- if(mesec>=3&&mesec <=9)
- {
- if(mesec==9&&den>1)
- cena=ceni[1];
- if(mesec==3)
- cena=ceni[1];
- else cena=ceni[0];
- }
- else
- cena=ceni[0];
- if(ima)
- cena+=zichara->getCena();
- }
- };
- 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