Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.36 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <iomanip>
  4. #include <cstring>
  5. #include <cstdlib>
  6. #include <stdlib.h>
  7. #include <time.h>
  8. #include <stdio.h>
  9.  
  10.  
  11.  
  12. using namespace std;
  13.  
  14.  
  15. class Date
  16. {
  17. private:
  18. int dd,mm,yy;
  19. public:
  20. Date()
  21. {
  22. // cout << "Create data" << endl;
  23. time_t t = time(0);
  24. tm* now = localtime(&t);
  25. dd=now->tm_mday;
  26. mm=now->tm_mon+1;
  27. yy=now->tm_year+1900;
  28. }
  29. Date(int DD,int MM, int YY)
  30. {
  31. if (DD>31 || DD<1 || MM>12 || MM<1 || YY<0)
  32. {
  33. cout << "ERROR" << endl;
  34. dd=-1;
  35. yy=-1;
  36. mm=-1;
  37. }else
  38. {
  39. // cout << "Create data" << endl;
  40. dd=DD;
  41. mm=MM;
  42. yy=YY;
  43. }
  44. }
  45. Date(const Date &obj)
  46. {
  47. // cout << "Copy data" << endl;
  48. dd=obj.dd;
  49. yy=obj.yy;
  50. mm=obj.mm;
  51. }
  52. ~Date()
  53. {
  54. // cout << "Kill data" << endl;
  55. }
  56. int GetDD()
  57. {
  58. return dd;
  59. }
  60. int GetMM()
  61. {
  62. return mm;
  63. }
  64. int GetYY()
  65. {
  66. return yy;
  67. }
  68. void OutputDate()
  69. {
  70. cout << setw(2) << setfill('0') << dd << "." << setw(2) << setfill('0') << mm << "." << yy << endl;
  71. }
  72. Date& mod_dd(int DD)
  73. {
  74. dd=DD;
  75. return *this;
  76. }
  77. Date& mod_yy(int YY)
  78. {
  79. yy=YY;
  80. return *this;
  81. }
  82. Date& mod_mm(int MM)
  83. {
  84. mm=MM;
  85. return *this;
  86. }
  87. };
  88.  
  89. enum posluga{prybyranya, muttya_vikon, doglyad_za_dytynou, dribnyi_remont, zmishana};
  90.  
  91. class vykonavec
  92. {
  93. private:
  94. char* name;
  95. char* surname;
  96. Date birthday;
  97. int quality;
  98. public:
  99. int arr[5]={rand() % 100,rand() % 100,rand() % 100,rand() % 100,rand() % 100};
  100. vykonavec()
  101. {
  102. // cout << "Create vykonavec" << endl;
  103. name="Петр";
  104. surname="Петрович";
  105. quality=50;
  106. birthday.mod_dd(12);
  107. birthday.mod_mm(3);
  108. birthday.mod_yy(2000);
  109. }
  110. vykonavec(char* Name, char* Surname, Date Birthday, int Quality)
  111. {
  112. if (Birthday.GetDD()!=-1 && Quality>0 && Quality<100)
  113. {
  114. // cout << "Create vykonavec" << endl;
  115. quality=Quality;
  116. name=Name;
  117. surname=Surname;
  118. birthday=Birthday;
  119. } else
  120. cout << "ERROR" << endl;
  121. }
  122. vykonavec(const vykonavec &obj)
  123. {
  124. // cout << "Copy vykonavec" << endl;
  125. quality=obj.quality;
  126. name=obj.name;
  127. surname=obj.surname;
  128. birthday=obj.birthday;
  129. }
  130. ~vykonavec()
  131. {
  132. //cout << "Kill vykonavec" << endl;
  133. };
  134. char* GetName()
  135. {
  136. return name;
  137. }
  138. char* GetSurname()
  139. {
  140. return surname;
  141. }
  142. Date GetBirthday()
  143. {
  144. return birthday;
  145. }
  146. int GetQuality()
  147. {
  148. return quality;
  149. }
  150. OutputVykonavec()
  151. {
  152. cout << name << endl;
  153. cout << surname << endl;
  154. cout << "Рейтинг - " << quality << endl;
  155. cout << "Дата рождения - "; birthday.OutputDate();
  156. }
  157. vykonavec& mod_name(char* Name)
  158. {
  159. name=Name;
  160. return *this;
  161. }
  162. vykonavec& mod_surname(char* Surname)
  163. {
  164. surname=Surname;
  165. return *this;
  166. }
  167. vykonavec& mod_birthday(Date Birthday)
  168. {
  169. birthday=Birthday;
  170. return *this;
  171. }
  172. vykonavec& mod_quality(int Quality)
  173. {
  174. quality=Quality;
  175. return *this;
  176. }
  177. };
  178.  
  179.  
  180. class zamovnyk
  181. {
  182. private:
  183. posluga pos;
  184. char *adress;
  185. public:
  186. zamovnyk()
  187. {
  188. // cout << "Create zamovnyk" << endl;
  189. pos=doglyad_za_dytynou;
  190. adress="St.01";
  191. }
  192. zamovnyk(posluga Pos, char* Adress)
  193. {
  194. if (Pos>=0 && Pos <=4)
  195. {
  196. // cout << "Create zamovnyk" << endl;
  197. pos=Pos;
  198. adress=Adress;
  199. }
  200. else cout << "ERROR" << endl;
  201. }
  202. zamovnyk(const zamovnyk &obj)
  203. {
  204. // cout << "Copy zamovnyk" << endl;
  205. pos=obj.pos;
  206. adress=obj.adress;
  207. }
  208. ~zamovnyk()
  209. {
  210. //cout << "Kill zamovnyk" << endl;
  211. };
  212. posluga GetPosluga()
  213. {
  214. return pos;
  215. }
  216. char * GetAdress()
  217. {
  218. return adress;
  219. }
  220. OutputZamovnyk()
  221. {
  222. switch(pos)
  223. {
  224. case 0: cout << "prybyranya" << endl; break;
  225. case 1: cout << "muttya_vikon" << endl; break;
  226. case 2: cout << "doglyad_za_dytynou" << endl; break;
  227. case 3: cout << "dribnyi_remont" << endl; break;
  228. case 4: cout << "zmishana" << endl; break;
  229. }
  230. cout << adress << endl;
  231. }
  232. zamovnyk& mod_posluga(posluga Pos)
  233. {
  234. pos=Pos;
  235. return *this;
  236. }
  237. zamovnyk& mod_adress(char* Adress)
  238. {
  239. adress=Adress;
  240. return *this;
  241. }
  242. };
  243.  
  244.  
  245. class zamovlennya: public vykonavec, public zamovnyk
  246. {
  247. private:
  248. Date date;
  249. int price=arr[zamovnyk::GetPosluga()];
  250. public:
  251. zamovlennya()
  252. {
  253. // cout << "Create zamovlennya\n\n" << endl;
  254. vykonavec();
  255. zamovnyk();
  256. date=Date();
  257. }
  258. 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)
  259. {
  260. // cout << "Create zamovlennya\n\n" << endl;
  261. date=Date;
  262. }
  263. zamovlennya(const zamovlennya &obj):vykonavec(obj),zamovnyk(obj)
  264. {
  265. // cout << "Copy zamovlennya\n\n" << endl;
  266. date=obj.date;
  267. }
  268. ~zamovlennya()
  269. {
  270. // cout << "Kill zamovlennya\n\n" << endl;
  271. };
  272. Date GetDate()
  273. {
  274. return date;
  275. }
  276. int GetPrice()
  277. {
  278. return price;
  279. }
  280. OutputZamovlennya()
  281. {
  282. vykonavec:OutputVykonavec();
  283. zamovnyk:OutputZamovnyk();
  284. date.OutputDate();
  285. cout << "Price:" << price << endl;
  286. }
  287. zamovlennya& mod_date(Date Date)
  288. {
  289. date=Date;
  290. return *this;
  291. }
  292. };
  293.  
  294.  
  295. class buro
  296. {
  297. private:
  298. char nazva[20];
  299. int cnt;
  300. char *adress;
  301. int quality;
  302. zamovlennya* mas;
  303. int count;
  304. vykonavec* rab;
  305. public:
  306. buro()
  307. {
  308. cout << "!" << endl;
  309. strcpy(nazva,"Noname");
  310. strcpy(adress,"St.00");
  311. count=0;
  312. cnt=0;
  313. mas=NULL;
  314. rab=NULL;
  315. }
  316. buro(char Nazva[20], char *Adress, zamovlennya* m, int c, vykonavec* r, int cc)
  317. {
  318. cout << "!" << endl;
  319. for (int i=0; i<19; i++) nazva[i]=Nazva[i];
  320. strcpy(adress,Adress);
  321. mas=new zamovlennya[c];
  322. rab=new vykonavec[cc];
  323. if (c!=0 ) for (int i=0; i<c; i++) mas[i]=m[i];
  324. if (cc!=0) for (int i=0; i<cc; i++) rab[i]=r[i];
  325. cnt=c;
  326. count=cc;
  327. }
  328. buro(const buro& obj)
  329. {
  330. strcpy(nazva,obj.nazva);
  331. strcpy(adress,obj.adress);
  332. cnt=obj.cnt;
  333. count=obj.count;
  334. mas=new zamovlennya[cnt];
  335. rab=new vykonavec[count];
  336. for(int i=0;i<cnt;i++) mas[i]=obj.mas[i];
  337. for(int i=0;i<count;i++) rab[i]=obj.rab[i];
  338. }
  339. ~buro()
  340. {
  341. delete [] mas;
  342. delete [] rab;
  343. }
  344. buro& add_zam(zamovlennya a)
  345. {
  346. zamovlennya* new_mas;
  347. new_mas=new zamovlennya[cnt+1];
  348. for (int i=0; i<cnt; i++)
  349. {
  350. new_mas[i]=mas[i];
  351. }
  352. delete [] mas;
  353. cnt++;
  354. new_mas[cnt-1]=a;
  355. mas=new_mas;
  356. return *this;
  357. }
  358. buro& add_rab(vykonavec a)
  359. {
  360. vykonavec* new_rab;
  361. new_rab=new vykonavec[count+1];
  362. for (int i=0; i<count; i++)
  363. {
  364. new_rab[i]=rab[i];
  365. }
  366. delete [] rab;
  367. count++;
  368. new_rab[count-1]=a;
  369. rab=new_rab;
  370. return *this;
  371. }
  372. char* get_nazva()
  373. {
  374. return nazva;
  375. }
  376. char* get_aress()
  377. {
  378. return adress;
  379. }
  380. int get_cnt()
  381. {
  382. return cnt;
  383. }
  384. zamovlennya* get_mas()
  385. {
  386. return mas;
  387. }
  388. vykonavec* get_rab()
  389. {
  390. return rab;
  391. }
  392. buro& mod_nazva(char s[20])
  393. {
  394. for (int i=0; i<19; i++) nazva[i]=s[i];
  395. return *this;
  396. }
  397. buro& mod_cnt(int c)
  398. {
  399. cnt=c;
  400. return *this;
  401. }
  402. buro& mod_mas(zamovlennya* m)
  403. {
  404. delete mas;
  405. mas=m;
  406. return *this;
  407. }
  408. buro& mod_rab(vykonavec* m)
  409. {
  410. delete rab;
  411. rab=m;
  412. return *this;
  413. }
  414. void Output_buro()
  415. {
  416. cout << "!" << endl;
  417. cout << nazva << endl;
  418. cout << adress << endl;
  419. cout << cnt << endl;
  420. for (int i=0; i<cnt; i++)
  421. {
  422. cout << i+1 << ":" << endl;
  423. mas[i].OutputZamovlennya();
  424. }
  425. }
  426. void Output_buro_short()
  427. {
  428. cout << nazva << endl;
  429. int sum=0;
  430. for (int i=0; i<cnt; i++) sum+=mas[i].GetPrice();
  431. cout << sum << endl;
  432. }
  433.  
  434. };
  435.  
  436. int main()
  437. {
  438. setlocale(LC_ALL,"Russian");
  439. srand(time(NULL));
  440. vykonavec rab1,rab2,rab3,rab4,rab5,rab6,rab7,rab8,rab9,rab10;
  441. rab1=vykonavec("Николай","Миколайович",Date(9,4,1989),64);
  442. rab2=vykonavec();
  443. rab2.OutputVykonavec();
  444. rab3=vykonavec("Noname","AFK",Date(9,5,1945),1);
  445. rab3.OutputVykonavec();
  446. rab4=vykonavec("Курт","Кобейн",Date(20,2,1967),5);
  447. rab5=vykonavec("Владимир","Ильич",Date(22,4,1870),70);
  448. rab6=vykonavec("Цой","Жив",Date(9,4,1969),76);
  449. rab7=vykonavec("Лидия","Петровна",Date(5,8,1992),34);
  450. rab8=vykonavec("Молодой","Человек",Date(1,2,2007),10);
  451. rab9=vykonavec("Работник","Года",Date(3,5,1970),99);
  452. rab10=vykonavec("Человек","Паук",Date(1,1,1962),80);
  453. buro buro1;
  454. buro1=buro();
  455. buro1.Output_buro();
  456. return 0;
  457. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement