Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Zichara {
- private:
- char *mesto; // dinamicki alocirano pole od znaci
- int cena;
- public:
- Zichara() {}
- Zichara(char *m, int c) {
- mesto = new char[strlen(m)];
- strcpy(mesto, m);
- cena = c;
- }
- Zichara(const Zichara &tmp) {
- mesto = new char[strlen(tmp.mesto)];
- strcpy(mesto, tmp.mesto);
- cena = tmp.cena;
- }
- Zichara& operator = (const Zichara &tmp) {
- if(this != &tmp) {
- strcpy(mesto, tmp.mesto);
- cena = tmp.cena;
- }
- return *this;
- }
- ~Zichara() {}
- int get_cena() {
- return cena;
- }
- };
- class PlaninarskiDom {
- private:
- char ime[16];
- int cena[2];
- char klasa;
- bool ima_zichara;
- Zichara *z;
- public:
- PlaninarskiDom() {}
- PlaninarskiDom(char *i, int c[2], char k) {
- strcpy(ime, i);
- cena[0] = c[0];
- cena[1] = c[1];
- klasa = k;
- }
- PlaninarskiDom(const PlaninarskiDom &tmp) {
- strcpy(ime, tmp.ime);
- cena[0] = tmp.cena[0];
- cena[1] = tmp.cena[1];
- klasa = tmp.klasa;
- ima_zichara = tmp.ima_zichara;
- z = tmp.z;
- }
- PlaninarskiDom& operator = (const PlaninarskiDom &tmp) {
- if(this != &tmp) {
- strcpy(ime, tmp.ime);
- cena[0] = tmp.cena[0];
- cena[1] = tmp.cena[1];
- klasa = tmp.klasa;
- ima_zichara = tmp.ima_zichara;
- z = tmp.z;
- }
- return *this;
- }
- ~PlaninarskiDom() {}
- PlaninarskiDom& operator -- () {
- if(klasa != 'F')
- klasa++;
- return *this;
- }
- bool operator <= (char c) {
- if(klasa <= c) {
- return false;
- }
- return true;
- }
- void presmetajDnevenPrestoj(int den, int mesec, int &c) {
- c=0;
- if(den < 1 or den > 31 or mesec < 1 or mesec > 12) {
- throw 0;
- }
- else {
- int vkupna_cena = 0;
- if(mesec >= 4 and mesec <= 8) {
- vkupna_cena = cena[0];
- }
- else {
- vkupna_cena = cena[1];
- }
- if(ima_zichara == true) {
- vkupna_cena += z->get_cena();
- }
- c = vkupna_cena;
- }
- }
- void setZichara(Zichara tmp) {
- ima_zichara = true;
- z = &tmp;
- }
- friend ostream& operator << (ostream &stream,PlaninarskiDom tmp);
- };
- ostream& operator << (ostream &stream,PlaninarskiDom tmp) {
- stream << tmp.ime << " " << "klasa:" << tmp.klasa;
- if(tmp.ima_zichara == true) {
- stream << " so Zichara" ;
- }
- stream << endl;
- return stream;
- }
- 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!";
- }
- }
- /*
- Pelister 21 31 E
- 1
- Molika 20
- 3 3
- **/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement