fork download
  1. #include<iostream>
  2. #include<time.h>
  3. using namespace std;
  4.  
  5. struct date {
  6. int ngay, thang, nam;
  7. };
  8.  
  9. bool nhuan(int p) {
  10. if (p % 4 == 0 && p % 100 != 0) return true;
  11. else return false;
  12. }
  13.  
  14.  
  15. void taoDate(date*& p) {
  16.  
  17. p = new date;
  18.  
  19. p->nam = 0; p->thang = 0; p->ngay = 0;
  20. p->nam = rand()/10;
  21. p->thang = 1 + rand() % (12 - 1);
  22.  
  23. if (p->thang == 1 || p->thang == 3 || p->thang == 5 || p->thang == 7 ||
  24. p->thang == 8 || p->thang == 10 || p->thang == 12) {
  25. p->ngay = 1 + rand() % (31 - 1);
  26. }
  27.  
  28. if (p->thang == 4 || p->thang == 6 || p->thang == 9 || p->thang == 11) {
  29. p->ngay = 1 + rand() % (30 - 1);
  30. }
  31.  
  32. if (nhuan(p->nam)) {
  33. if (p->thang == 2) {
  34. p->ngay = 1 + rand() % (29 - 1);
  35. }
  36. }
  37. else {
  38. if (p->thang == 2) {
  39. p->ngay = 1 + rand() % (28 - 1);
  40. }
  41. }
  42.  
  43. }
  44.  
  45. void inDate(date* p) {
  46. cout << p->ngay << "-" << p->thang << "-" << p->nam;
  47. }
  48.  
  49. int tinhNgayTrongNam(date* p) {
  50. int a;
  51. int dem31 = 0, dem30 = 0, thang2 = 0;
  52.  
  53. for (int i = 1;i < p->thang;i++) {
  54. if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
  55. dem31++;
  56. }
  57. if (i == 4 || i == 6 || i == 9 || i == 11) {
  58. dem30++;
  59. }
  60. }
  61.  
  62. if (nhuan(p->nam)) thang2 = 29;
  63. else thang2 = 28;
  64.  
  65. a = dem31 * 31 + dem30 * 30 + thang2 + p->ngay;
  66.  
  67. return a;
  68. }
  69.  
  70. int tinhSoNgayCuaDate(date* p) {
  71. int dem = 0;
  72. int demNhuan = 0;
  73.  
  74. for (int i = 0;i < p->nam;i++) {
  75. if (nhuan(p->nam)) {
  76. demNhuan++;
  77. }
  78. }
  79.  
  80. dem = p->nam * 365 + demNhuan + tinhNgayTrongNam(p);
  81.  
  82. return dem;
  83. }
  84.  
  85. int khoangCach(date* p, date* q) {
  86. int kc;
  87. int ngayp = tinhSoNgayCuaDate(p);
  88. int ngayq = tinhSoNgayCuaDate(q);
  89.  
  90. kc = abs(ngayp - ngayq + 1);
  91.  
  92. return kc;
  93. }
  94.  
  95. int main() {
  96. date* p; date* q;
  97.  
  98. srand((unsigned)time(NULL));
  99. taoDate(p);
  100. srand((unsigned)time(NULL)+2);
  101. taoDate(q);
  102.  
  103. cout << "Date 1: ";
  104. inDate(p);
  105.  
  106. cout << "\nDate 2: ";
  107. inDate(q);
  108.  
  109. int kc = khoangCach(p, q);
  110.  
  111. cout << "\nKhoang cach giua 2 dates la " << kc << " ngay";
  112.  
  113. delete p;
  114. delete q;
  115.  
  116. return 0;
  117. }
Success #stdin #stdout 0.17s 5304KB
stdin
Standard input is empty
stdout
Date 1: 7-6-148075853
Date 2: 26-11-86922904
Khoang cach giua 2 dates la 759066829 ngay