Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include <iomanip>
- #include <cstring>
- #include <cstdlib>
- #include <stdlib.h>
- #include <time.h>
- #include <stdio.h>
- using namespace std;
- class Date
- {
- private:
- int dd,mm,yy;
- public:
- Date()
- {
- // cout << "Create data" << endl;
- time_t t = time(0);
- tm* now = localtime(&t);
- dd=now->tm_mday;
- mm=now->tm_mon+1;
- yy=now->tm_year+1900;
- }
- Date(int DD,int MM, int YY)
- {
- if (DD>31 || DD<1 || MM>12 || MM<1 || YY<0)
- {
- cout << "ERROR" << endl;
- dd=-1;
- yy=-1;
- mm=-1;
- }else
- {
- // cout << "Create data" << endl;
- dd=DD;
- mm=MM;
- yy=YY;
- }
- }
- Date(const Date &obj)
- {
- // cout << "Copy data" << endl;
- dd=obj.dd;
- yy=obj.yy;
- mm=obj.mm;
- }
- ~Date()
- {
- // cout << "Kill data" << endl;
- }
- int GetDD()
- {
- return dd;
- }
- int GetMM()
- {
- return mm;
- }
- int GetYY()
- {
- return yy;
- }
- void OutputDate()
- {
- cout << setw(2) << setfill('0') << dd << "." << setw(2) << setfill('0') << mm << "." << yy << endl;
- }
- Date& mod_dd(int DD)
- {
- dd=DD;
- return *this;
- }
- Date& mod_yy(int YY)
- {
- yy=YY;
- return *this;
- }
- Date& mod_mm(int MM)
- {
- mm=MM;
- return *this;
- }
- };
- enum posluga{prybyranya, muttya_vikon, doglyad_za_dytynou, dribnyi_remont, zmishana};
- class vykonavec
- {
- private:
- char* name;
- char* surname;
- Date birthday;
- int quality;
- public:
- int arr[5]={rand() % 100,rand() % 100,rand() % 100,rand() % 100,rand() % 100};
- vykonavec()
- {
- // cout << "Create vykonavec" << endl;
- name="Петр";
- surname="Петрович";
- quality=50;
- birthday.mod_dd(12);
- birthday.mod_mm(3);
- birthday.mod_yy(2000);
- }
- vykonavec(char* Name, char* Surname, Date Birthday, int Quality)
- {
- if (Birthday.GetDD()!=-1 && Quality>0 && Quality<100)
- {
- // cout << "Create vykonavec" << endl;
- quality=Quality;
- name=Name;
- surname=Surname;
- birthday=Birthday;
- } else
- cout << "ERROR" << endl;
- }
- vykonavec(const vykonavec &obj)
- {
- // cout << "Copy vykonavec" << endl;
- quality=obj.quality;
- name=obj.name;
- surname=obj.surname;
- birthday=obj.birthday;
- }
- ~vykonavec()
- {
- //cout << "Kill vykonavec" << endl;
- };
- char* GetName()
- {
- return name;
- }
- char* GetSurname()
- {
- return surname;
- }
- Date GetBirthday()
- {
- return birthday;
- }
- int GetQuality()
- {
- return quality;
- }
- OutputVykonavec()
- {
- cout << name << endl;
- cout << surname << endl;
- cout << "Рейтинг - " << quality << endl;
- cout << "Дата рождения - "; birthday.OutputDate();
- }
- vykonavec& mod_name(char* Name)
- {
- name=Name;
- return *this;
- }
- vykonavec& mod_surname(char* Surname)
- {
- surname=Surname;
- return *this;
- }
- vykonavec& mod_birthday(Date Birthday)
- {
- birthday=Birthday;
- return *this;
- }
- vykonavec& mod_quality(int Quality)
- {
- quality=Quality;
- return *this;
- }
- };
- class zamovnyk
- {
- private:
- posluga pos;
- char *adress;
- public:
- zamovnyk()
- {
- // cout << "Create zamovnyk" << endl;
- pos=doglyad_za_dytynou;
- adress="St.01";
- }
- zamovnyk(posluga Pos, char* Adress)
- {
- if (Pos>=0 && Pos <=4)
- {
- // cout << "Create zamovnyk" << endl;
- pos=Pos;
- adress=Adress;
- }
- else cout << "ERROR" << endl;
- }
- zamovnyk(const zamovnyk &obj)
- {
- // cout << "Copy zamovnyk" << endl;
- pos=obj.pos;
- adress=obj.adress;
- }
- ~zamovnyk()
- {
- //cout << "Kill zamovnyk" << endl;
- };
- posluga GetPosluga()
- {
- return pos;
- }
- char * GetAdress()
- {
- return adress;
- }
- OutputZamovnyk()
- {
- switch(pos)
- {
- case 0: cout << "prybyranya" << endl; break;
- case 1: cout << "muttya_vikon" << endl; break;
- case 2: cout << "doglyad_za_dytynou" << endl; break;
- case 3: cout << "dribnyi_remont" << endl; break;
- case 4: cout << "zmishana" << endl; break;
- }
- cout << adress << endl;
- }
- zamovnyk& mod_posluga(posluga Pos)
- {
- pos=Pos;
- return *this;
- }
- zamovnyk& mod_adress(char* Adress)
- {
- adress=Adress;
- return *this;
- }
- };
- class zamovlennya: public vykonavec, public zamovnyk
- {
- private:
- Date date;
- int price=arr[zamovnyk::GetPosluga()];
- public:
- zamovlennya()
- {
- // cout << "Create zamovlennya\n\n" << endl;
- vykonavec();
- zamovnyk();
- date=Date();
- }
- zamovlennya(char* vyk_name, char* vyk_surname, Date vyk_birthday, int vyk_quality, posluga zam_pos, char* zam_adress, Date Date):vykonavec(vyk_name,vyk_surname,vyk_birthday,vyk_quality),zamovnyk(zam_pos,zam_adress)
- {
- // cout << "Create zamovlennya\n\n" << endl;
- date=Date;
- }
- zamovlennya(const zamovlennya &obj):vykonavec(obj),zamovnyk(obj)
- {
- // cout << "Copy zamovlennya\n\n" << endl;
- date=obj.date;
- }
- ~zamovlennya()
- {
- // cout << "Kill zamovlennya\n\n" << endl;
- };
- Date GetDate()
- {
- return date;
- }
- int GetPrice()
- {
- return price;
- }
- OutputZamovlennya()
- {
- vykonavec:OutputVykonavec();
- zamovnyk:OutputZamovnyk();
- date.OutputDate();
- cout << "Price:" << price << endl;
- }
- zamovlennya& mod_date(Date Date)
- {
- date=Date;
- return *this;
- }
- };
- class buro
- {
- private:
- char nazva[20];
- int cnt;
- char *adress;
- int quality;
- zamovlennya* mas;
- int count;
- vykonavec* rab;
- public:
- buro()
- {
- cout << "!" << endl;
- strcpy(nazva,"Noname");
- strcpy(adress,"St.00");
- count=0;
- cnt=0;
- mas=NULL;
- rab=NULL;
- }
- buro(char Nazva[20], char *Adress, zamovlennya* m, int c, vykonavec* r, int cc)
- {
- cout << "!" << endl;
- for (int i=0; i<19; i++) nazva[i]=Nazva[i];
- strcpy(adress,Adress);
- mas=new zamovlennya[c];
- rab=new vykonavec[cc];
- if (c!=0 ) for (int i=0; i<c; i++) mas[i]=m[i];
- if (cc!=0) for (int i=0; i<cc; i++) rab[i]=r[i];
- cnt=c;
- count=cc;
- }
- buro(const buro& obj)
- {
- strcpy(nazva,obj.nazva);
- strcpy(adress,obj.adress);
- cnt=obj.cnt;
- count=obj.count;
- mas=new zamovlennya[cnt];
- rab=new vykonavec[count];
- for(int i=0;i<cnt;i++) mas[i]=obj.mas[i];
- for(int i=0;i<count;i++) rab[i]=obj.rab[i];
- }
- ~buro()
- {
- delete [] mas;
- delete [] rab;
- }
- buro& add_zam(zamovlennya a)
- {
- zamovlennya* new_mas;
- new_mas=new zamovlennya[cnt+1];
- for (int i=0; i<cnt; i++)
- {
- new_mas[i]=mas[i];
- }
- delete [] mas;
- cnt++;
- new_mas[cnt-1]=a;
- mas=new_mas;
- return *this;
- }
- buro& add_rab(vykonavec a)
- {
- vykonavec* new_rab;
- new_rab=new vykonavec[count+1];
- for (int i=0; i<count; i++)
- {
- new_rab[i]=rab[i];
- }
- delete [] rab;
- count++;
- new_rab[count-1]=a;
- rab=new_rab;
- return *this;
- }
- char* get_nazva()
- {
- return nazva;
- }
- char* get_aress()
- {
- return adress;
- }
- int get_cnt()
- {
- return cnt;
- }
- zamovlennya* get_mas()
- {
- return mas;
- }
- vykonavec* get_rab()
- {
- return rab;
- }
- buro& mod_nazva(char s[20])
- {
- for (int i=0; i<19; i++) nazva[i]=s[i];
- return *this;
- }
- buro& mod_cnt(int c)
- {
- cnt=c;
- return *this;
- }
- buro& mod_mas(zamovlennya* m)
- {
- delete mas;
- mas=m;
- return *this;
- }
- buro& mod_rab(vykonavec* m)
- {
- delete rab;
- rab=m;
- return *this;
- }
- void Output_buro()
- {
- cout << "!" << endl;
- cout << nazva << endl;
- cout << adress << endl;
- cout << cnt << endl;
- for (int i=0; i<cnt; i++)
- {
- cout << i+1 << ":" << endl;
- mas[i].OutputZamovlennya();
- }
- }
- void Output_buro_short()
- {
- cout << nazva << endl;
- int sum=0;
- for (int i=0; i<cnt; i++) sum+=mas[i].GetPrice();
- cout << sum << endl;
- }
- };
- int main()
- {
- setlocale(LC_ALL,"Russian");
- srand(time(NULL));
- vykonavec rab1,rab2,rab3,rab4,rab5,rab6,rab7,rab8,rab9,rab10;
- rab1=vykonavec("Николай","Миколайович",Date(9,4,1989),64);
- rab2=vykonavec();
- rab2.OutputVykonavec();
- rab3=vykonavec("Noname","AFK",Date(9,5,1945),1);
- rab3.OutputVykonavec();
- rab4=vykonavec("Курт","Кобейн",Date(20,2,1967),5);
- rab5=vykonavec("Владимир","Ильич",Date(22,4,1870),70);
- rab6=vykonavec("Цой","Жив",Date(9,4,1969),76);
- rab7=vykonavec("Лидия","Петровна",Date(5,8,1992),34);
- rab8=vykonavec("Молодой","Человек",Date(1,2,2007),10);
- rab9=vykonavec("Работник","Года",Date(3,5,1970),99);
- rab10=vykonavec("Человек","Паук",Date(1,1,1962),80);
- buro buro1;
- buro1=buro();
- buro1.Output_buro();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement