Advertisement
neogz

Bolnica - PR1

Jun 10th, 2014
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.72 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. char crt[] = "\n-----------------------------\n";
  5. enum Drzavljanin{ bih, hr, sr, cg, slo };
  6. char * opis[] = { "bih", "hr", "sr", "cg", "slo" };
  7.  
  8. struct Datum{
  9.     int * _dan;
  10.     int * _mjesec;
  11.     int * _godina;
  12.     void unos();
  13.     void unos(int, int, int);
  14.     void ispis();
  15.     void ispis(int, int, int);
  16.     void dealociraj();
  17.  
  18.     // unos, ispis, dealociraj
  19. };
  20. void Datum::unos(){
  21.     _dan = new int;
  22.     _mjesec = new int;
  23.     _godina = new int;
  24.  
  25.     cout << "Unesite datum: [dd/mm/gggg]" << endl;
  26.     cin >> *_dan >> *_mjesec >> *_godina;
  27.  
  28. }
  29. void Datum::unos(int d, int m, int g)
  30. {
  31.     _dan = new int(d);
  32.     _mjesec = new int(m);
  33.     _godina = new int(g);
  34.  
  35. }
  36. void Datum::ispis(){
  37.     cout << "Datum: [" << *_dan << "/" << *_mjesec << "/" << *_godina << "]" << endl;
  38. }
  39. void Datum::ispis(int d, int m, int g){
  40.     cout << "Datum: [" << d << "/" << m << "/" << g << "]" << endl;
  41. }
  42. void Datum::dealociraj(){
  43.     delete _dan, _mjesec, _godina;
  44. }
  45. // ---------------------------------------------------------
  46. struct Pregled {
  47.     Datum _datumPregleda;
  48.     char * _dijagnoza;
  49.     char * _terapija;
  50.     // unos, ispis, dealociraj
  51.     void unos();
  52.     void unos(Datum, char*, char*);
  53.     void ispis();
  54.     void dealokacija();
  55. };
  56. void Pregled::unos(){
  57.     _datumPregleda.unos();
  58.     cin.ignore();
  59.  
  60.     int brojZnakova;
  61.     char temp[150];
  62.     cout << "Unesite dijagnozu:" << endl;
  63.     cin.getline(temp, 150);
  64.     brojZnakova = strlen(temp) + 1;
  65.  
  66.     _dijagnoza = new char[brojZnakova];
  67.     strcpy_s(_dijagnoza, brojZnakova, temp);
  68.  
  69.     cout << "Unesite terapiju:" << endl;
  70.     cin.getline(temp, 150);
  71.     brojZnakova = strlen(temp) + 1;
  72.  
  73.     _terapija = new char[brojZnakova];
  74.     strcpy_s(_terapija, brojZnakova, temp);
  75.  
  76. }
  77. void Pregled::unos(Datum datumPregleda, char* dijagnoza, char*terapija){
  78.    
  79.     _datumPregleda.unos(*datumPregleda._dan, *datumPregleda._mjesec, *datumPregleda._godina);
  80.     int brojZnakova = strlen(dijagnoza )+1;
  81.  
  82.     _dijagnoza = new char[brojZnakova];
  83.     strcpy_s(_dijagnoza, brojZnakova, dijagnoza);
  84.  
  85.     brojZnakova = strlen(terapija) + 1;
  86.  
  87.     _terapija = new char[brojZnakova];
  88.     strcpy_s(_terapija, brojZnakova, terapija);
  89.  
  90.    
  91. }
  92. void Pregled::ispis(){
  93.     _datumPregleda.ispis();
  94.  
  95.     cout << crt << "Vasa dijagnoza: " << _dijagnoza << endl;
  96.     cout << "Vasa terapija: " << _terapija << crt;
  97.  
  98. }
  99. void Pregled::dealokacija(){
  100.     _datumPregleda.dealociraj();
  101.     delete [] _dijagnoza;
  102.     delete [] _terapija;
  103.  
  104.     _dijagnoza= _terapija = NULL;
  105. }
  106.  
  107. // ---------------------------------------------------------
  108. struct Pacijent {
  109.     char _JMBG[14];
  110.     char * _imePrezime;
  111.     Datum _datumRodjenja;
  112.     Drzavljanin _drzava;
  113.     Pregled * _listaPregleda;
  114.     int _brojPregleda;
  115.     // unos, ispis, dodaj pregled, ukloni pregled, get pregledi by dijagnoza
  116.     // get pregledi by mjesec, dealociraj
  117.     void unos();
  118.     void ispis(){
  119.         cout << _JMBG << endl << _imePrezime << endl;
  120.         _datumRodjenja.ispis();
  121.         cout << opis[_drzava] << endl;
  122.         for (int i = 0; i < _brojPregleda; i++)
  123.         {  
  124.             cout << crt;
  125.             _listaPregleda[i].ispis();
  126.  
  127.         }
  128.  
  129.     }
  130.     void dodajPregled(Datum,char*,char*);
  131.     void dodajPregled(Pregled);
  132.     void ukloniPregled();
  133.     Pregled * getPreglediByDijagnoza(char *, int &);
  134.     Pregled * getPreglediByMjesec(int, int &);
  135.     void dealokacija();
  136. };
  137. void Pacijent::unos(){
  138.     cout << crt << "Unesite JMBG: " << endl;
  139.     cin.getline(_JMBG, 14);
  140.     cout << crt;
  141.  
  142.     int brojZnakova;
  143.     char temp[40];
  144.     cout << crt<< "Unesite ime i prezime:" << endl;
  145.     cin.getline(temp, 40);
  146.     brojZnakova = strlen(temp) + 1;
  147.     _imePrezime = new char[brojZnakova];
  148.     strcpy_s(_imePrezime, brojZnakova, temp);
  149.     cout << crt;
  150.  
  151.     _datumRodjenja.unos();
  152.  
  153.    
  154.     int unos;
  155.     cout << crt << "Unesite drzavu: |bih-1, hr-2, sr-3, cg-4, slo-5|" << endl;
  156.     cin >> unos;
  157.     unos--;
  158.     _drzava = (Drzavljanin)unos;
  159.    
  160.     _brojPregleda = 0;
  161.     _listaPregleda = nullptr;
  162.  
  163.  
  164. }
  165. void Pacijent::dodajPregled(Datum dp, char*d, char*t){
  166.    
  167.     Pregled * temp = new Pregled[_brojPregleda + 1];
  168.     for (int i = 0; i < _brojPregleda; i++)
  169.         temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  170.  
  171.     delete[]_listaPregleda;
  172.     _listaPregleda = temp;
  173.     _listaPregleda[_brojPregleda].unos(dp, d, t);
  174.     _brojPregleda++;
  175.  
  176. }
  177. void Pacijent::dodajPregled(Pregled novi){
  178.  
  179.     Pregled * temp = new Pregled[_brojPregleda + 1];
  180.     for (int i = 0; i < _brojPregleda; i++)
  181.         temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  182.  
  183.     delete[]_listaPregleda;
  184.     _listaPregleda = temp;
  185.     _listaPregleda[_brojPregleda].unos(novi._datumPregleda, novi._dijagnoza, novi._terapija);
  186.     _brojPregleda++;
  187.  
  188. }
  189. void Pacijent::ukloniPregled(){
  190.     for (int i = 0; i < _brojPregleda; i++)
  191.     {  
  192.         cout << "PREGLED " << i + 1 << endl;
  193.         _listaPregleda[i].ispis();
  194.     }
  195.    
  196.     int izbor;
  197.     do {
  198.         cout << "Izaberi pregled koji zelite ukloniti: ";
  199.         cin >> izbor;
  200.     } while (izbor < 1 || izbor > _brojPregleda);
  201.     izbor--;
  202.  
  203.     Pregled * temp = new Pregled[_brojPregleda - 1];
  204.     for (int i = 0; i < _brojPregleda - 1; i++){
  205.         if (i >= izbor){temp[i].unos(_listaPregleda[i+1]._datumPregleda, _listaPregleda[i+1]._dijagnoza, _listaPregleda[i+1]._terapija);}
  206.         else            temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);}
  207.    
  208.     delete[]_listaPregleda;
  209.     _listaPregleda = temp;
  210.     _brojPregleda--;
  211.  
  212. }
  213. Pregled * Pacijent::getPreglediByDijagnoza(char * dijagnoza, int & brojPregleda){
  214.     int brojac=0;
  215.     for (int i = 0; i < _brojPregleda; i++)
  216.         if (strstr(_listaPregleda[i]._dijagnoza, dijagnoza) != 0)
  217.             brojac++;
  218.     Pregled * temp = new Pregled[brojac];
  219.     for (int i = 0; i < brojac; i++)
  220.          temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  221.    
  222.     brojPregleda = brojac;
  223.     return temp;
  224. }
  225. Pregled * Pacijent::getPreglediByMjesec(int m, int & brojPregleda){
  226.     int brojac = 0;
  227.     for (int i = 0; i < _brojPregleda; i++)
  228.     if (m == *_listaPregleda[i]._datumPregleda._mjesec)
  229.         brojac++;
  230.  
  231.     Pregled * temp = new Pregled[brojac];
  232.     for (int i = 0; i < brojac; i++)
  233.         temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  234.    
  235.     brojPregleda = brojac;
  236.     return temp;
  237. }
  238. void Pacijent::dealokacija(){
  239.     delete[]_imePrezime;
  240.     _datumRodjenja.dealociraj();
  241.     for (int i = 0; i < _brojPregleda; i++)
  242.         _listaPregleda[i].dealokacija();
  243.     delete[]_listaPregleda;
  244. }
  245.  
  246. int main()
  247. {
  248.     Pacijent denis;
  249.     denis.unos();
  250.     Datum dp;
  251.  
  252.  
  253.     dp.unos(8, 2, 2013);
  254.     denis.dodajPregled(dp, "Dijagnoza 1", "Terapija 1");
  255.  
  256.     dp.unos(10, 46, 2014);
  257.     denis.dodajPregled(dp, "Dijagnoza 2", "Terapija 2");
  258.  
  259.     dp.unos(10, 6, 2014);
  260.     denis.dodajPregled(dp, "Dijagnoza 3", "Terapija 3");
  261.  
  262.     denis.ukloniPregled();
  263.     denis.ispis();
  264.     denis.dealokacija();
  265.  
  266.     system("pause>null");
  267.     return 0;
  268. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement