Advertisement
Guest User

Untitled

a guest
Aug 27th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.52 KB | None | 0 0
  1. #include<iostream>
  2. #include <string>
  3. #include<vector>
  4. #include<algorithm>
  5. using namespace std;
  6.  
  7. template<class T1,class T2>
  8. class Kolekcija{
  9. T1 * _elementi1;
  10. T2 * _elementi2;
  11. int * _max;
  12. int * _trenutnoElemenata;
  13. //1. AddElement :: omogucava dodavanje novog elementa u kolekciju. Osigurati automatsko
  14. // prosiranje kolekcije ukoliko broj elemenata dostigne trenutni maksimum, te onemoguciti
  15. // ponavljanje elemenata. U zavisnosti od uspjesnosti operacije, funkcija vraca true ili false
  16. //2. RemoveElement :: na osnovu parametra tipa T1 uklanja elemente iz kolekcije. Ukoliko je
  17. // potrebno,prilikom uklanjanja elementa izvrsiti dealokaciju. Onemoguciti pojavljivanje
  18. // neinicijaliziranih elemenata, te ocuvati redoslijed dodavanja elemenata. U zavisnosti od
  19. // uspjesnosti operacije, funkcija vraca true ili false
  20. //3. operator -= :: uklanja sve elemnte iz kolekcije koji su identicni onima koje posjeduje
  21. // drugi objekat tipa Kolekcija koji je primljen kao parametar. Funkcija vraca broj uklonjenih elemenata
  22.  
  23. };
  24.  
  25. class Datum{
  26. private:
  27. int _dan, _mjesec, _godina;
  28. public:
  29. Datum(int dan=1, int mjesec=1, int godina=1900){
  30.     _dan=dan;
  31.     _mjesec=mjesec;
  32.     _godina=godina;
  33. }
  34. //1. potrebne funkcije
  35. friend ostream &operator<<(ostream &out, Datum d){
  36.     out<<d._dan<<"."<<d._mjesec<<"."<<d._godina;
  37.     return out;
  38. }
  39. };
  40. class Pregled{
  41. private:
  42. vector<char *> _terapije;
  43. bool * _zakazanNoviTermin; //u slucaju da je pacijent narucen na kontrolni pregled
  44. Datum _datumPregleda;
  45. public:
  46.     Pregled(Datum dat){
  47.         _zakazanNoviTermin=new bool;
  48.         *_zakazanNoviTermin=false;
  49.         _datumPregleda=dat;
  50.     }
  51.     ~Pregled(){
  52.         delete _zakazanNoviTermin;
  53.         _zakazanNoviTermin=NULL;
  54.     }
  55. //1. potrebne funkcije
  56. //2. Info :: ispisuje sve podatke o pregledu. Koristiti ostream_iterator. Prije ispisa
  57. // sve terapije sortirati
  58.     void info (){
  59.         cout<<"\nDatum pregleda: "<<_datumPregleda<<endl;
  60.         if((*_zakazanNoviTermin)==true)
  61.             cout<<"Novi termin je zakazan";
  62.         else
  63.             cout<<"Novi termin nije zakazan";
  64.         sort(_terapije.begin(),_terapije.end());
  65.         cout<<endl;
  66.         for(vector<char *>::iterator it=_terapije.begin();it!=_terapije.end();it++){
  67.             cout<<"Terapija: "<<*it<<endl;
  68.         }
  69.     }
  70. //3. AddTerapija :: dodaje novu terapiju. Onemoguciti ponavljanje terapija. Koristiti iteratore
  71.     void AddTerapija(char* t){
  72.         bool dodaj=true;
  73.         for(vector<char *>::iterator it=_terapije.begin();it!=_terapije.end();it++){
  74.             if(strcmp(*it,t)==0)
  75.                 dodaj=false;
  76.         }
  77.         if(dodaj)
  78.             _terapije.push_back(t);
  79.     }
  80. //4. RemoveTerapija :: uklanja sve terapije koje u sebi sadrze rijec primljenu kao parametar.
  81. // Koristiti iteratore
  82.     void RemoveTerapija(char* t){
  83.         int i=0;
  84.         for(vector<char *>::iterator it=_terapije.begin();it!=_terapije.end();it++){
  85.             if(strstr(*it,t)!=NULL){
  86.                 //??_terapije.erase(_terapije.begin()+i);
  87.             }
  88.             ++i;
  89.         }
  90.     }
  91. };
  92. class Pacijent{
  93. protected:
  94. const int _pacijentID;
  95. char _imePrezime[20];
  96. //tip string je za podatke o postavljenoj dijagnozi (jedna dijagnoza moze imati vise terapija)
  97. //objekat tipa Pregled je za podatke o terapijama, te o zakazanom pregledu
  98. Kolekcija<string, Pregled> * _preglediPacijenta;
  99. //1. operator [] :: vraca Pregled kod koga je postavljena dijagnoza koja je proslijedjena kao
  100. // parametar. Dakle, operatorska funkcija prima dijagnozu kao parametar
  101. //2. AddPregled :: dodaje podatke o novom pregledu pacijenta. Nije dozvoljeno dodati dva
  102. // identicna pregleda. U zavisnosti od uspjesnosti operacije, funkcija vraca true ili false
  103. //3. RemovePregledByDatum :: na osnovu primljenog parametra (tipa Datum) uklanja podatke o svim pregledima
  104. // koji su obavljeni odredjenog datuma. U zavisnosti od uspjesnosti operacije, funkcija vraca true ili
  105. // false
  106. //4. RemovePregledByTerapija :: na osnovu primljenog parametra (terapije) uklanja podatke o svim
  107. // pregledima kod koji je propisana trazena terapija. U zavisnosti od uspjesnosti operacije,
  108. // funkcija vraca true ili false
  109. //5. operator<< :: ispisuje vrijednosti svih atributa klase
  110. };
  111. void main(){
  112. //izbjegavajte koristenje vlastitog imena i prezimena.
  113. //provjeriti validnost izvrsenja svih dostupnih funkcionalnosti na objektu tipa Pacijent
  114.     cout<<"\n---TESTIRANJE DATUMA"<<endl;
  115.     Datum dat1;
  116.     Datum dat2(6,06,2014);
  117.     cout<<dat1<<endl<<dat2;
  118.     cout<<"\n---TESTIRANJE PREGLEDA"<<endl;
  119.     Pregled pr(dat2);
  120.     pr.AddTerapija("Prva terapija");
  121.     pr.AddTerapija("Druga terapija");
  122.     pr.AddTerapija("1 terapija");
  123.     pr.AddTerapija("2 terapija");
  124.     pr.AddTerapija("10 terapija");
  125.     pr.AddTerapija("1 terapija");
  126.     pr.RemoveTerapija("1");
  127.     pr.info();
  128.     system ("pause>0");
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement