Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <stdlib.h>
- #include <time.h>
- using namespace std;
- string x1, x2;
- size_t spacja;
- int rok[2], miesiac[2], dzien[2], godz[2], minu[2], sek[2];
- void zmiana_string(int a, string r, string m, string dz, string g, string mi, string s) //zamiana podstringów t na int
- {
- rok[a] = atoi(r.c_str());
- miesiac[a] = atoi(m.c_str());
- dzien[a] = atoi(dz.c_str());
- godz[a] = atoi(g.c_str());
- minu[a] = atoi(mi.c_str());
- sek[a] = atoi(s.c_str());
- }
- string dziel(string t) //dziela ciag znakow z data na osobne ciagi
- {
- spacja = t.find(" ");
- string str = t.substr(0, spacja);
- return str;
- }
- bool oblicz_godz (int g0, int minu0, int sek0, int g1, int minu1, int sek1) //oblicza czy ostatni dzieñ jest pelny doby
- {
- if (g0 * 3600 + minu0 * 60 + sek0 > g1 * 3600 + minu1 * 60 + sek1)
- {
- return 1;
- }
- return 0;
- }
- int oblicz_dni_w_przedziale(int a,int b, int r) //oblicza dni w przedziale miesiecy, bierze pod uwagê lata przestêpne
- {
- int chwile=0, c;
- for (int i = a; i < b; i++)
- {
- if (i == 3 || i == 5 || i == 8 || i == 10)
- {
- c = 30;
- }
- else if (i == 1)
- {
- if (rok[0] % 4 == 0 && r % 100 != 0 || r % 400 == 0)
- {
- c = 29;
- }
- else
- {
- c = 28;
- }
- }
- else
- {
- c = 31;
- }
- chwile += c;
- }
- return chwile;
- }
- int oblicz_chwile(string data1, string data2) //oblicza liczbê chwil
- {
- int chwile=0, y;
- string r, m, dz, g, mi, s;
- //rozdzielanie x1 na podstringi
- r=dziel(x1);
- x1.erase(0, spacja + 1);
- m=dziel(x1);
- x1.erase(0, spacja + 1);
- dz=dziel(x1);
- x1.erase(0, spacja + 1);
- g=dziel(x1);
- x1.erase(0, spacja + 1);
- mi=dziel(x1);
- x1.erase(0, spacja + 1);
- s=dziel(x1);
- //zamiana podstringów x1 na int
- zmiana_string(0, r, m, dz, g, mi, s);
- //rozdzielanie x2 na podstringi
- r = dziel(x2);
- x2.erase(0, spacja + 1);
- m = dziel(x2);
- x2.erase(0, spacja + 1);
- dz = dziel(x2);
- x2.erase(0, spacja + 1);
- g = dziel(x2);
- x2.erase(0, spacja + 1);
- mi = dziel(x2);
- x2.erase(0, spacja + 1);
- s = dziel(x2);
- //zamiana podstringów x2 na int
- zmiana_string(1, r, m, dz, g, mi, s);
- if (rok[0] == rok[1]) //Oblicza dni w latach granicznych
- {
- chwile = +(oblicz_dni_w_przedziale(miesiac[0] - 1, miesiac[1] - 1, rok[0])) - dzien[0] + dzien[1];
- }
- else
- {
- chwile += (oblicz_dni_w_przedziale(miesiac[0] - 1, 12, rok[0])) - dzien[0];
- chwile += (oblicz_dni_w_przedziale(0, miesiac[1] - 1, rok[1])) + dzien[1];
- }
- y = rok[0] + 1;
- for (int i = 0; i < rok[1]-y; i++) //oblicza dni w latach pomiêdzy granicznymi
- {
- rok[0]++;
- chwile += (oblicz_dni_w_przedziale(0, 12, rok[0]));
- }
- chwile-=oblicz_godz(godz[0], minu[0], sek[0], godz[1], minu[1], sek[1]); //sprawdza czy ostatnia doba jest pe³na
- return chwile;
- }
- int main()
- {
- int n; //liczba porównañ
- cin >> n;
- cin.ignore();
- int * tablica = new int[n+1]; //do zapisu liczby chwil
- for (int i = 0; i < n; i++) //pobieranie x1 i x2 oraz obliczanie
- {
- getline(cin, x1);
- getline(cin, x2);
- tablica[i]=oblicz_chwile(x1, x2);
- }
- for (int j = 0; j < n; j++) //wypisywanie wyników z tablicy
- {
- cout << tablica[j] << endl;
- }
- delete [] tablica;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement