Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- #include<cstring>
- using namespace std;
- //ова е место за вашиот код
- class Zichara{
- char *mesto;
- int cena;
- public:
- Zichara(char *i,int c){
- cena=c;
- mesto=new char[strlen(i)+1];
- strcpy(mesto,i);
- }
- friend ostream & operator << (ostream & o,Zichara &c)
- {
- o<<c.mesto<<" "<<c.cena<<endl;
- return o;
- }
- int getcena()
- {
- return cena;}
- Zichara()
- {
- }
- Zichara&operator=(Zichara &z)
- {
- if(this!=&z)
- {
- mesto=new char[strlen(z.mesto)+1];
- strcpy(mesto,z.mesto);
- cena=z.cena;
- }
- return *this;
- }
- Zichara&operator=(Zichara *z)
- {
- if(this!=z)
- {
- mesto=new char[strlen(z->mesto)+1];
- strcpy(mesto,z->mesto);
- cena=z->cena;
- }
- return *this;
- }
- ~Zichara(){
- delete []mesto;
- }
- };
- class PlaninarskiDom{
- private:
- char *ime;
- int cena[2];
- bool imaZ;
- char klasa;
- Zichara *zic=new Zichara;
- public:
- PlaninarskiDom(){
- imaZ=false;
- }
- PlaninarskiDom(char *i,int *c,char a)
- {
- ime=new char[strlen(i)+1];
- strcpy(ime,i);
- cena[0]=c[0];
- cena[1]=c[1];
- klasa=a;
- }
- PlaninarskiDom(const PlaninarskiDom &p)
- {
- ime=new char[strlen(p.ime)+1];
- strcpy(ime,p.ime);
- cena[0]=p.cena[0];
- cena[1]=p.cena[1];
- // strcpy(klasa,p.klasa);// DALI E OK ???
- imaZ=p.imaZ;
- if(imaZ)
- *zic=p.zic;
- }
- /*Zichara * getZ()
- {
- return *zic;
- }*/
- PlaninarskiDom &operator=(PlaninarskiDom &p)
- {
- if(this!=&p)
- {
- ime=new char[strlen(p.ime)+1];
- strcpy(ime,p.ime);
- cena[0]=p.cena[0];
- cena[1]=p.cena[1];
- //strcpy(klasa,p.klasa);
- klasa=p.klasa;
- imaZ=p.imaZ;
- if(imaZ)
- *zic=p.zic;
- }
- return *this;
- }
- PlaninarskiDom &operator--()
- {
- if(klasa!='F')
- klasa++;
- return *this;
- }
- friend bool operator<=(PlaninarskiDom &p,char a)
- {
- int i=(int)p.klasa;
- int j=(int)a;
- return (i>=j);
- }
- void setZichara(Zichara &r)
- {
- imaZ=true;
- *zic=r;
- //cout<<(*zic);
- }
- friend ostream &operator<<(ostream & o,PlaninarskiDom &p)
- {
- o<<p.ime<<" klasa:"<<p.klasa;
- if(p.imaZ)
- o<<" so Zichara"<<endl;
- else
- o<<endl;
- return o;
- }
- void presmetajDnevenPrestoj(int d,int m,int &c)
- {
- if(d>0&&d<=31&&m>0&&m<=12)
- {
- if(m>=4&&m<7)
- {c=cena[0];}
- else if(m==7&&d==1)
- {c=cena[0];}
- else
- {c=cena[1];}
- if(imaZ)
- c+=(*zic).getcena();
- }
- else
- throw 214234;
- }
- ~PlaninarskiDom(){
- delete []ime;
- delete zic;
- }
- };
- 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!";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement