Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. using namespace std;
  7.  
  8. string x1, x2;
  9. size_t spacja;
  10. int rok[2], miesiac[2], dzien[2], godz[2], minu[2], sek[2];
  11.  
  12. void zmiana_string(int a, string r, string m, string dz, string g, string mi, string s) //zamiana podstringów t na int
  13. {
  14. rok[a] = atoi(r.c_str());
  15. miesiac[a] = atoi(m.c_str());
  16. dzien[a] = atoi(dz.c_str());
  17. godz[a] = atoi(g.c_str());
  18. minu[a] = atoi(mi.c_str());
  19. sek[a] = atoi(s.c_str());
  20. }
  21.  
  22. string dziel(string t) //dziela ciag znakow z data na osobne ciagi
  23. {
  24. spacja = t.find(" ");
  25. string str = t.substr(0, spacja);
  26. return str;
  27. }
  28.  
  29. bool oblicz_godz (int g0, int minu0, int sek0, int g1, int minu1, int sek1) //oblicza czy ostatni dzieñ jest pelny doby
  30. {
  31. if (g0 * 3600 + minu0 * 60 + sek0 > g1 * 3600 + minu1 * 60 + sek1)
  32. {
  33. return 1;
  34. }
  35. return 0;
  36. }
  37.  
  38. int oblicz_dni_w_przedziale(int a,int b, int r) //oblicza dni w przedziale miesiecy, bierze pod uwagê lata przestêpne
  39. {
  40. int chwile=0, c;
  41. for (int i = a; i < b; i++)
  42. {
  43. if (i == 3 || i == 5 || i == 8 || i == 10)
  44. {
  45. c = 30;
  46. }
  47. else if (i == 1)
  48. {
  49. if (rok[0] % 4 == 0 && r % 100 != 0 || r % 400 == 0)
  50. {
  51. c = 29;
  52. }
  53. else
  54. {
  55. c = 28;
  56. }
  57. }
  58. else
  59. {
  60. c = 31;
  61. }
  62. chwile += c;
  63. }
  64. return chwile;
  65. }
  66.  
  67. int oblicz_chwile(string data1, string data2) //oblicza liczbê chwil
  68. {
  69. int chwile=0, y;
  70. string r, m, dz, g, mi, s;
  71.  
  72. //rozdzielanie x1 na podstringi
  73. r=dziel(x1);
  74. x1.erase(0, spacja + 1);
  75. m=dziel(x1);
  76. x1.erase(0, spacja + 1);
  77. dz=dziel(x1);
  78. x1.erase(0, spacja + 1);
  79. g=dziel(x1);
  80. x1.erase(0, spacja + 1);
  81. mi=dziel(x1);
  82. x1.erase(0, spacja + 1);
  83. s=dziel(x1);
  84.  
  85. //zamiana podstringów x1 na int
  86. zmiana_string(0, r, m, dz, g, mi, s);
  87.  
  88. //rozdzielanie x2 na podstringi
  89. r = dziel(x2);
  90. x2.erase(0, spacja + 1);
  91. m = dziel(x2);
  92. x2.erase(0, spacja + 1);
  93. dz = dziel(x2);
  94. x2.erase(0, spacja + 1);
  95. g = dziel(x2);
  96. x2.erase(0, spacja + 1);
  97. mi = dziel(x2);
  98. x2.erase(0, spacja + 1);
  99. s = dziel(x2);
  100.  
  101. //zamiana podstringów x2 na int
  102. zmiana_string(1, r, m, dz, g, mi, s);
  103.  
  104. if (rok[0] == rok[1]) //Oblicza dni w latach granicznych
  105. {
  106. chwile = +(oblicz_dni_w_przedziale(miesiac[0] - 1, miesiac[1] - 1, rok[0])) - dzien[0] + dzien[1];
  107. }
  108. else
  109. {
  110. chwile += (oblicz_dni_w_przedziale(miesiac[0] - 1, 12, rok[0])) - dzien[0];
  111. chwile += (oblicz_dni_w_przedziale(0, miesiac[1] - 1, rok[1])) + dzien[1];
  112. }
  113.  
  114. y = rok[0] + 1;
  115.  
  116. for (int i = 0; i < rok[1]-y; i++) //oblicza dni w latach pomiêdzy granicznymi
  117. {
  118. rok[0]++;
  119. chwile += (oblicz_dni_w_przedziale(0, 12, rok[0]));
  120. }
  121.  
  122. chwile-=oblicz_godz(godz[0], minu[0], sek[0], godz[1], minu[1], sek[1]); //sprawdza czy ostatnia doba jest pe³na
  123.  
  124. return chwile;
  125. }
  126.  
  127. int main()
  128. {
  129. int n; //liczba porównañ
  130. cin >> n;
  131. cin.ignore();
  132.  
  133. int * tablica = new int[n+1]; //do zapisu liczby chwil
  134.  
  135. for (int i = 0; i < n; i++) //pobieranie x1 i x2 oraz obliczanie
  136. {
  137. getline(cin, x1);
  138. getline(cin, x2);
  139.  
  140. tablica[i]=oblicz_chwile(x1, x2);
  141. }
  142.  
  143. for (int j = 0; j < n; j++) //wypisywanie wyników z tablicy
  144. {
  145. cout << tablica[j] << endl;
  146. }
  147. delete [] tablica;
  148. return 0;
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement