JosepRivaille

P68836: F008A. Dates badèniques

May 7th, 2015
732
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. struct Data {
  6.     int dia, mes, any;
  7. };
  8.  
  9. void llegir_data(Data& x) {
  10.     char c;
  11.     cin >> x.dia >> c >> x.mes >> c >> x.any;
  12. }
  13.  
  14. bool menor(const Data& d1, const Data& d2) {
  15.     if (d1.any < d2.any) return true;
  16.     else if (d1.any == d2.any) {
  17.         if (d1.mes < d2.mes) return true;
  18.         else if (d1.mes == d2.mes) {
  19.             if (d1.dia < d2.dia) return true;
  20.         }
  21.     }
  22.     return false;
  23. }
  24.  
  25.  
  26. //Pre: Llegeix un nombre n i n dates de estrutura indefinida
  27. //Post: Escriu quina es la primera data que esta  compresa entre l'anterior i la següent
  28. int main() {
  29.     int n;
  30.     cin >> n;
  31.     Data d1, d2;
  32.     llegir_data(d2);
  33.     --n;
  34.     bool cond1 = false, cond2 = false; //Ordre dates creixent
  35.     bool cond3 = false, cond4 = false; //Ordre dates decreixent
  36.     bool trobat = false;
  37.     while (not trobat && n != 0) {
  38.         d1.any = d2.any;
  39.         d1.mes = d2.mes;
  40.         d1.dia = d2.dia;
  41.         llegir_data(d2);
  42.         //d1 > dx > d2
  43.         if (not cond3 && not menor(d1, d2)) cond3 = true;
  44.         else if (cond3 && not menor(d1, d2)) cond4 = true;
  45.         else if (cond3 && menor(d1, d2)) cond3 = false;
  46.         //d1 < dx < d2
  47.         if (not cond1 && menor(d1, d2)) cond1 = true;
  48.         else if (cond1 && menor(d1, d2)) cond2 = true;
  49.         else if (cond1 && not menor(d1, d2)) cond1 = false;
  50.         //Veredicte
  51.         if ((cond1 && cond2) || (cond3 && cond4)) trobat = true;
  52.         --n;
  53.     }
  54.     if (trobat) cout << d1.dia << "/" << d1.mes << "/" << d1.any << endl;
  55.     else cout << "cap data trobada" << endl;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment