Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3.  
  4. using namespace std;
  5.  
  6. bool przestepny (int rok)
  7. {
  8. int reszta1=rok%4;
  9. int reszta2=rok%100;
  10. int reszta3=rok%400;
  11. if (((reszta1 == 0 && reszta2 != 0)|| reszta3 ==0) && rok >1582)
  12. {
  13. return 1;
  14. }
  15. else if (rok<=1582 && reszta1 ==0)
  16. {
  17. return 1;
  18. }
  19. else
  20. {
  21. return 0;
  22. }
  23. };
  24.  
  25.  
  26. class data
  27. {
  28. public:
  29. //private:
  30. int dzien;
  31. int miesiac;
  32. int rok;
  33.  
  34. data(int day, int month, int year)
  35. {
  36. dzien = day;
  37. miesiac = month;
  38. rok = year;
  39. }
  40. data()
  41. {
  42. time_t czas;
  43. struct tm * data;
  44. char d[12];
  45. char m[12];
  46. char y[12];
  47. time(&czas);
  48. data = localtime(&czas);
  49. strftime(d, 12, "%d", data);
  50. strftime(m, 12, "%m", data);
  51. strftime(y, 12, "%Y", data);
  52. dzien = ((int)d[0] - 48) * 10 + (int)d[1] - 48;
  53. miesiac = ((int)m[0] - 48) * 10 + (int)m[1] - 48;
  54. rok = ((int)y[0] - 48) * 1000 + ((int)y[1] - 48) * 100 + ((int)y[2] - 48) * 10 + ((int)y[3] - 48);
  55. }
  56. data(const data &Data)
  57. {
  58. dzien = Data.dzien;
  59. miesiac = Data.miesiac;
  60. rok = Data.rok;
  61. }
  62.  
  63. void operator=( const data &d )
  64. {
  65.  
  66. this->dzien = d.dzien;
  67. this->miesiac = d.miesiac;
  68. this->rok = d.rok;
  69.  
  70. }
  71.  
  72. int operator - (const data &Data)
  73. {
  74.  
  75. int miesiac[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  76. int rok1 = this -> rok;
  77. int rok2 = Data.rok;
  78. int mies1 = this -> miesiac;
  79. int mies2 = Data.miesiac;
  80. int dzien1 = this -> dzien;
  81. int dzien2 = Data.dzien;
  82. int dni = 0;
  83.  
  84. while(rok1 != rok2 || mies1 != mies2 || dzien1 != dzien2)
  85. {
  86. if(dzien1 == 1)
  87. {
  88. if(mies1 == 1)
  89. {
  90. mies1 = 12;
  91. rok1 --;
  92. }
  93. else
  94. {
  95. mies1 --;
  96. }
  97.  
  98. if(przestepny(rok1) && mies1 == 2)
  99. {
  100. dzien1 = miesiac[mies1] + 1;
  101. }
  102. else
  103. {
  104. dzien1 = miesiac[mies1];
  105. }
  106. }
  107. else
  108. {
  109. dzien1--;
  110. }
  111. if(dzien1 < 5 || dzien1 > 14 || mies1 != 10 || rok1 != 1582)
  112. {
  113. dni++;
  114. }
  115. }
  116. return dni;
  117. }
  118.  
  119. data operator + (const int & dni)
  120. {
  121. int miesiac[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  122.  
  123. int year = this -> rok;
  124. int month = this -> miesiac;
  125. int day = this -> dzien;
  126. int counter = dni;
  127.  
  128. while(counter != 0)
  129. {
  130. if((!przestepny(year) && day == miesiac[month]) || (przestepny(year) && day == miesiac[month] + 1 && month == 2) || (przestepny(year) && day == miesiac[month] && month != 2))
  131. {
  132. day = 1;
  133.  
  134. if(month == 12)
  135. {
  136. month = 1;
  137. year ++;
  138. }
  139. else
  140. {
  141. month ++;
  142. }
  143. }
  144. else
  145. {
  146. day++;
  147. }
  148. if(day < 5 || day > 14 || month != 10 || year != 1582)
  149. {
  150. counter--;
  151. }
  152. }
  153.  
  154. return data(day, month, year);
  155. }
  156.  
  157. data operator - (const int & dni)
  158. {
  159. int miesiac[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  160.  
  161. int year = this -> rok;
  162. int month = this -> miesiac;
  163. int day = this -> dzien;
  164. int counter = dni;
  165.  
  166. while(counter != 0)
  167. {
  168. if(day == 1)
  169. {
  170. if(month == 1)
  171. {
  172. month = 12;
  173. year --;
  174. }
  175. else
  176. {
  177. month --;
  178. }
  179.  
  180. if(przestepny(year) && month == 2)
  181. {
  182. day = miesiac[month] + 1;
  183. }
  184. else
  185. {
  186. day = miesiac[month];
  187. }
  188. }
  189. else
  190. {
  191. day--;
  192. }
  193. if(day < 5 || day > 14 || month != 10 || year != 1582)
  194. {
  195. counter --;
  196. }
  197. }
  198.  
  199. return data(day, month, year);
  200. }
  201.  
  202. void wynik()
  203. {
  204. cout << dzien << " " << miesiac << " " << rok << endl;
  205. }
  206.  
  207.  
  208. };
  209.  
  210. void wypisz(data a)
  211. {
  212. cout<<a.dzien<<" "<<a.miesiac<<" "<<a.rok;
  213.  
  214.  
  215. }
  216.  
  217.  
  218. data dodawanie(data a, data b)
  219. {
  220. a.rok+=b.rok;
  221.  
  222. if(a.miesiac+b.miesiac>12)
  223. {
  224.  
  225. a.miesiac=a.miesiac+b.miesiac-12;
  226.  
  227. a.rok++;
  228.  
  229.  
  230.  
  231.  
  232. }
  233. else
  234. {
  235. a.miesiac+=b.miesiac;
  236. }
  237.  
  238.  
  239.  
  240. if(a.dzien+b.dzien<32 && a.miesiac%2==1)
  241. {
  242. a.dzien+=b.dzien;
  243. }
  244.  
  245. if(a.dzien+b.dzien<31 && a.miesiac%2==0 && a.miesiac!=2)
  246. {
  247. a.dzien+=b.dzien;
  248. }
  249.  
  250. if(a.dzien+b.dzien<29 && a.miesiac==2 && a.rok<1583 && a.rok%4!=0)
  251. {
  252. a.dzien+=b.dzien;
  253. }
  254.  
  255. if(a.dzien+b.dzien<30 && a.miesiac==2 && a.rok<1583 && a.rok%4==0)
  256. {
  257. a.dzien+=b.dzien;
  258. }
  259.  
  260. if(a.dzien+b.dzien<30 && a.miesiac==2 && a.rok>1583 && ((a.rok%4==0 && a.rok%100!=0) || a.rok%400==0))
  261. {
  262. a.dzien+=b.dzien;
  263. }
  264.  
  265. if(a.dzien+b.dzien<29 && a.miesiac==2 && a.rok>1583 && ((a.rok%4!=0) || a.rok%400!=0))
  266. {
  267. a.dzien+=b.dzien;
  268. }
  269.  
  270. if(a.dzien+b.dzien>31 && a.miesiac%2==1)
  271. {
  272. a.dzien=a.dzien+b.dzien-31;
  273.  
  274. a.miesiac++;
  275.  
  276. }
  277.  
  278. if(a.dzien+b.dzien>30 && a.miesiac%2==0 && a.miesiac!=2)
  279. {
  280. a.dzien=a.dzien+b.dzien-30;
  281.  
  282. a.miesiac++;
  283.  
  284. }
  285.  
  286. if(a.dzien+b.dzien>28 && a.miesiac==2 && a.rok<1582 && a.rok%4!=0)
  287. {
  288. a.dzien=a.dzien+b.dzien-28;
  289.  
  290. a.miesiac++;
  291.  
  292. }
  293. if(a.dzien+b.dzien>29 && a.miesiac==2 && a.rok<1582 && a.rok%4==0)
  294. {
  295. a.dzien=a.dzien+b.dzien-29;
  296.  
  297. a.miesiac++;
  298.  
  299. }
  300. if(a.dzien+b.dzien>29 && a.miesiac==2 && a.rok>1582 && ((a.rok%4==0 && a.rok%100!=0) || a.rok%400==0))
  301. {
  302. a.dzien=a.dzien+b.dzien-29;
  303.  
  304. a.miesiac++;
  305.  
  306. }
  307. if(a.dzien+b.dzien>28 && a.miesiac==2 && a.rok<1582 && ((a.rok%4!=0) || a.rok%400!=0))
  308. {
  309. a.dzien=a.dzien+b.dzien-28;
  310.  
  311. a.miesiac++;
  312.  
  313. }
  314.  
  315.  
  316. if(a.miesiac>12)
  317. {
  318.  
  319. a.miesiac=a.miesiac-12;
  320.  
  321. a.rok++;
  322.  
  323.  
  324. }
  325.  
  326.  
  327. return data(a.dzien, a.miesiac, a.rok);
  328.  
  329.  
  330. }
  331.  
  332. //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  333.  
  334. data odejmowanie(data a, data b)
  335. {
  336.  
  337. a.rok-=b.rok;
  338.  
  339. if(a.miesiac-b.miesiac<1)
  340. {
  341.  
  342. a.miesiac=a.miesiac-b.miesiac+12;
  343.  
  344. a.rok--;
  345.  
  346.  
  347.  
  348.  
  349. }
  350. else
  351. {
  352. a.miesiac-=b.miesiac;
  353. }
  354.  
  355.  
  356.  
  357. if(a.dzien-b.dzien>0)
  358. {
  359. a.dzien-=b.dzien;
  360.  
  361.  
  362. }
  363.  
  364.  
  365.  
  366.  
  367. if(a.dzien-b.dzien<1 && a.miesiac%2==1)
  368. {
  369. a.dzien=a.dzien-b.dzien+31;
  370.  
  371. a.miesiac--;
  372.  
  373. }
  374.  
  375. if(a.dzien-b.dzien<1 && a.miesiac%2==0 && a.miesiac!=2)
  376. {
  377. a.dzien=a.dzien-b.dzien+30;
  378.  
  379. a.miesiac--;
  380.  
  381. }
  382.  
  383. if(a.dzien-b.dzien<1 && a.miesiac==2 && a.rok<1582 && a.rok%4!=0)
  384. {
  385. a.dzien=a.dzien-b.dzien+28;
  386.  
  387. a.miesiac--;
  388.  
  389. }
  390. if(a.dzien-b.dzien<1 && a.miesiac==2 && a.rok<1582 && a.rok%4==0)
  391. {
  392. a.dzien=a.dzien-b.dzien+29;
  393.  
  394. a.miesiac--;
  395.  
  396. }
  397. if(a.dzien-b.dzien<1 && a.miesiac==2 && a.rok>1582 && ((a.rok%4==0 && a.rok%100!=0) || a.rok%400==0))
  398. {
  399. a.dzien=a.dzien-b.dzien+29;
  400.  
  401. a.miesiac--;
  402.  
  403. }
  404. if(a.dzien-b.dzien<1 && a.miesiac==2 && a.rok<1582 && ((a.rok%4!=0) || a.rok%400!=0))
  405. {
  406. a.dzien=a.dzien-b.dzien+28;
  407.  
  408. a.miesiac--;
  409.  
  410. }
  411.  
  412.  
  413. if(a.miesiac<1)
  414. {
  415.  
  416. a.miesiac=a.miesiac+12;
  417.  
  418. a.rok--;
  419.  
  420.  
  421. }
  422.  
  423.  
  424. return data(a.dzien, a.miesiac, a.rok);
  425.  
  426.  
  427.  
  428.  
  429. }
  430.  
  431.  
  432. int main()
  433. {
  434. int dzien1, dzien2, miesiac1, miesiac2, rok1, rok2;
  435.  
  436. int liczba, oper;
  437.  
  438. int decyzja=0;
  439.  
  440. cout<<"1 -> dwie daty, 2 -> data i liczba"<<endl;
  441. cout<<"dzien miesiac rok operator(+->1, - ->2) druga data lub liczba"<<endl;
  442.  
  443. cin>>decyzja;
  444.  
  445. cout<<"Twoja decyzja"<<decyzja<<endl;
  446.  
  447. if(decyzja==1)
  448. {
  449. cin>>dzien1>>miesiac1>>rok1>>oper>>dzien2>>miesiac2>>rok2;
  450.  
  451.  
  452. }
  453. if(decyzja==2)
  454. {
  455. cin>>dzien1>>miesiac1>>rok1>>oper>>liczba;
  456.  
  457.  
  458. }
  459.  
  460.  
  461. int miesiac[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  462.  
  463. data data1, data2;
  464.  
  465.  
  466.  
  467. if(decyzja==2)// podano datΓͺ, operator i liczbe
  468. {
  469. data1.dzien=dzien1;
  470. data1.miesiac=miesiac1;
  471. data1.rok=rok1;
  472.  
  473. if(data1.miesiac>12 || data1.miesiac<1)
  474. {
  475. cout<<endl<<"zly miesiac"<<endl;
  476. }
  477.  
  478. if(data1.dzien>miesiac[data1.miesiac] || data1.dzien<1)
  479. {
  480. cout<<endl<<"zly dzien"<<endl;
  481. }
  482.  
  483.  
  484.  
  485.  
  486.  
  487. if(oper==1)
  488. {
  489. data1=data1+liczba;
  490.  
  491.  
  492. data1.wynik();
  493.  
  494.  
  495. }
  496. else if(oper==2)
  497. {
  498. data1=data1-liczba;
  499.  
  500.  
  501. data1.wynik();
  502.  
  503. }
  504. else
  505. {
  506. cout<<endl<<"blad2"<<endl;
  507. }
  508.  
  509.  
  510.  
  511. }
  512. else if(decyzja==1)
  513. {
  514. data1.dzien=dzien1;
  515. data1.miesiac=miesiac1;
  516. data1.rok=rok1;
  517.  
  518.  
  519.  
  520. if(data1.miesiac>12 || data1.miesiac<1)
  521. {
  522. cout<<endl<<"zly miesiac"<<endl;
  523. }
  524.  
  525. if(data1.dzien>miesiac[data1.miesiac] || data1.dzien<1)
  526. {
  527. cout<<endl<<"zly dzien"<<endl;
  528. }
  529.  
  530. data2.dzien=dzien2;
  531. data2.miesiac=miesiac2;
  532. data2.rok=rok2;
  533.  
  534. if(data2.miesiac>12 || data2.miesiac<1)
  535. {
  536. cout<<endl<<"zly miesiac"<<endl;
  537. }
  538.  
  539. if(data2.dzien>miesiac[data2.miesiac] || data2.dzien<1)
  540. {
  541. cout<<endl<<"zly dzien"<<endl;
  542. }
  543.  
  544. if(oper==2)
  545. {
  546. cout<<endl;
  547.  
  548. wypisz(odejmowanie(data1, data2));
  549.  
  550. cout<<endl;
  551.  
  552.  
  553.  
  554. }
  555. else if(oper==1)
  556. {
  557. cout<<endl;
  558.  
  559. wypisz(dodawanie(data1, data2));
  560.  
  561. cout<<endl;
  562.  
  563.  
  564.  
  565. }
  566. else
  567. {
  568. cout<<endl<<"blad3"<<endl;
  569. }
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577. }
  578. else
  579. {
  580. cout<<endl<<"blad4"<<endl;
  581. }
  582.  
  583.  
  584.  
  585.  
  586.  
  587. return 0;
  588. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement