SHARE
TWEET

Untitled

a guest Jan 20th, 2019 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top