Advertisement
Guest User

dane.h

a guest
Jun 16th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.99 KB | None | 0 0
  1. #ifndef DANE_H_INCLUDED
  2. #define DANE_H_INCLUDED
  3. #include <iostream>
  4. #include <stdexcept>
  5. #include <sstream>
  6.  
  7. using namespace std;
  8.  
  9. struct Osoba
  10. {
  11. private:
  12.     string imie;
  13.     string nazwisko;
  14.     string pesel;
  15.     string rok;
  16.     string miesiac;
  17.     string dzien;
  18. public:
  19.     Osoba(string i="", string n="", string p="", string r="", string m="", string d="")
  20.     {
  21.         imie=i;
  22.         nazwisko=n;
  23.         pesel=p;
  24.         rok=r;
  25.         miesiac=m;
  26.         dzien=d;
  27.     }
  28.     ~Osoba()
  29.     {
  30.  
  31.     }
  32.     void setImie(string i)
  33.     {
  34.         imie=i;
  35.     }
  36.     void setNazwisko(string n)
  37.     {
  38.         nazwisko=n;
  39.     }
  40.     void setPesel(string p)
  41.     {
  42.         pesel=p;
  43.  
  44.         dzien=pesel.substr(4,2);
  45.         int d;
  46.         istringstream is(dzien);
  47.         is >> d;
  48.         miesiac=pesel.substr(2,2);
  49.         int m;
  50.         istringstream is1(miesiac);
  51.         is1 >> m;
  52.         rok=pesel.substr(0,2);
  53.         int r;
  54.         istringstream is2(rok);
  55.         is2 >> r;
  56.  
  57.         if(m%2==0 && m!=8)
  58.         {
  59.             if(d>30)
  60.                 throw logic_error("zły dzień!");
  61.         }
  62.         if(m%2!=0)
  63.         {
  64.             if(d>31)
  65.                 throw logic_error("zły dzień!");
  66.         }
  67.  
  68.  
  69.         if(m>32)
  70.         {
  71.             throw logic_error("Zly miesiac!");
  72.         }
  73.     }
  74.     void setRok(string r)
  75.     {
  76.         rok=r;
  77.     }
  78.     void setMiesiac(string m)
  79.     {
  80.         miesiac=m;
  81.     }
  82.     void setDzien(string d)
  83.     {
  84.         dzien=d;
  85.     }
  86.  
  87.     string getImie()const
  88.     {
  89.         return imie;
  90.     }
  91.     string getNazwisko()const
  92.     {
  93.         return nazwisko;
  94.     }
  95.     string getPesel()const
  96.     {
  97.         return pesel;
  98.     }
  99.     string getDzien()const
  100.     {
  101.         string dzien=pesel.substr(4,2);
  102.         return dzien;
  103.     }
  104.     string getMiesiac()const
  105.     {
  106.         string miesiac=pesel.substr(2,2);
  107.         int m;
  108.         istringstream is1(miesiac);
  109.         is1 >> m;
  110.         if(m>20 && m<33)
  111.         {
  112.             m=m-20;
  113.         }
  114.         ostringstream ss;
  115.         ss << m;
  116.         miesiac=ss.str();
  117.         if(miesiac.size()==1)
  118.             miesiac="0" + miesiac;
  119.         return miesiac;
  120.     }
  121.     string getRok() const
  122.     {
  123.         string miesiac=pesel.substr(2,2);
  124.         int m;
  125.         istringstream is1(miesiac);
  126.         is1 >> m;
  127.         string rok=pesel.substr(0,2);
  128.         int r;
  129.         istringstream is2(rok);
  130.         is2 >> r;
  131.  
  132.         if(m<=12)
  133.         {
  134.             r=r+1900;
  135.         }
  136.         else if(m>20 && m<33)
  137.         {
  138.             r=r+2000;
  139.         }
  140.         else
  141.         {
  142.             r=r;
  143.         }
  144.         ostringstream ss;
  145.         ss << r;
  146.         rok=ss.str();
  147.         return rok;
  148.     }
  149.  
  150.     bool operator< (const Osoba&o)
  151.     {
  152.         return dzien<o.dzien, miesiac<o.miesiac, rok<o.rok;
  153.     }
  154.  
  155.  
  156.     bool operator> (const Osoba&o)
  157.     {
  158.         return rok>o.rok, miesiac>o.miesiac, dzien>o.dzien;
  159.     }
  160. };
  161.  
  162. #endif // DANE_H_INCLUDED
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement