Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <string>
- #include<vector>
- #include<algorithm>
- using namespace std;
- template<class T1,class T2>
- class Kolekcija{
- T1 * _elementi1;
- T2 * _elementi2;
- int * _max;
- int * _trenutnoElemenata;
- //1. AddElement :: omogucava dodavanje novog elementa u kolekciju. Osigurati automatsko
- // prosiranje kolekcije ukoliko broj elemenata dostigne trenutni maksimum, te onemoguciti
- // ponavljanje elemenata. U zavisnosti od uspjesnosti operacije, funkcija vraca true ili false
- //2. RemoveElement :: na osnovu parametra tipa T1 uklanja elemente iz kolekcije. Ukoliko je
- // potrebno,prilikom uklanjanja elementa izvrsiti dealokaciju. Onemoguciti pojavljivanje
- // neinicijaliziranih elemenata, te ocuvati redoslijed dodavanja elemenata. U zavisnosti od
- // uspjesnosti operacije, funkcija vraca true ili false
- //3. operator -= :: uklanja sve elemnte iz kolekcije koji su identicni onima koje posjeduje
- // drugi objekat tipa Kolekcija koji je primljen kao parametar. Funkcija vraca broj uklonjenih elemenata
- };
- class Datum{
- private:
- int _dan, _mjesec, _godina;
- public:
- Datum(int dan=1, int mjesec=1, int godina=1900){
- _dan=dan;
- _mjesec=mjesec;
- _godina=godina;
- }
- //1. potrebne funkcije
- friend ostream &operator<<(ostream &out, Datum d){
- out<<d._dan<<"."<<d._mjesec<<"."<<d._godina;
- return out;
- }
- };
- class Pregled{
- private:
- vector<char *> _terapije;
- bool * _zakazanNoviTermin; //u slucaju da je pacijent narucen na kontrolni pregled
- Datum _datumPregleda;
- public:
- Pregled(Datum dat){
- _zakazanNoviTermin=new bool;
- *_zakazanNoviTermin=false;
- _datumPregleda=dat;
- }
- ~Pregled(){
- delete _zakazanNoviTermin;
- _zakazanNoviTermin=NULL;
- }
- //1. potrebne funkcije
- //2. Info :: ispisuje sve podatke o pregledu. Koristiti ostream_iterator. Prije ispisa
- // sve terapije sortirati
- void info (){
- cout<<"\nDatum pregleda: "<<_datumPregleda<<endl;
- if((*_zakazanNoviTermin)==true)
- cout<<"Novi termin je zakazan";
- else
- cout<<"Novi termin nije zakazan";
- sort(_terapije.begin(),_terapije.end());
- cout<<endl;
- for(vector<char *>::iterator it=_terapije.begin();it!=_terapije.end();it++){
- cout<<"Terapija: "<<*it<<endl;
- }
- }
- //3. AddTerapija :: dodaje novu terapiju. Onemoguciti ponavljanje terapija. Koristiti iteratore
- void AddTerapija(char* t){
- bool dodaj=true;
- for(vector<char *>::iterator it=_terapije.begin();it!=_terapije.end();it++){
- if(strcmp(*it,t)==0)
- dodaj=false;
- }
- if(dodaj)
- _terapije.push_back(t);
- }
- //4. RemoveTerapija :: uklanja sve terapije koje u sebi sadrze rijec primljenu kao parametar.
- // Koristiti iteratore
- void RemoveTerapija(char* t){
- int i=0;
- for(vector<char *>::iterator it=_terapije.begin();it!=_terapije.end();it++){
- if(strstr(*it,t)!=NULL){
- //??_terapije.erase(_terapije.begin()+i);
- }
- ++i;
- }
- }
- };
- class Pacijent{
- protected:
- const int _pacijentID;
- char _imePrezime[20];
- //tip string je za podatke o postavljenoj dijagnozi (jedna dijagnoza moze imati vise terapija)
- //objekat tipa Pregled je za podatke o terapijama, te o zakazanom pregledu
- Kolekcija<string, Pregled> * _preglediPacijenta;
- //1. operator [] :: vraca Pregled kod koga je postavljena dijagnoza koja je proslijedjena kao
- // parametar. Dakle, operatorska funkcija prima dijagnozu kao parametar
- //2. AddPregled :: dodaje podatke o novom pregledu pacijenta. Nije dozvoljeno dodati dva
- // identicna pregleda. U zavisnosti od uspjesnosti operacije, funkcija vraca true ili false
- //3. RemovePregledByDatum :: na osnovu primljenog parametra (tipa Datum) uklanja podatke o svim pregledima
- // koji su obavljeni odredjenog datuma. U zavisnosti od uspjesnosti operacije, funkcija vraca true ili
- // false
- //4. RemovePregledByTerapija :: na osnovu primljenog parametra (terapije) uklanja podatke o svim
- // pregledima kod koji je propisana trazena terapija. U zavisnosti od uspjesnosti operacije,
- // funkcija vraca true ili false
- //5. operator<< :: ispisuje vrijednosti svih atributa klase
- };
- void main(){
- //izbjegavajte koristenje vlastitog imena i prezimena.
- //provjeriti validnost izvrsenja svih dostupnih funkcionalnosti na objektu tipa Pacijent
- cout<<"\n---TESTIRANJE DATUMA"<<endl;
- Datum dat1;
- Datum dat2(6,06,2014);
- cout<<dat1<<endl<<dat2;
- cout<<"\n---TESTIRANJE PREGLEDA"<<endl;
- Pregled pr(dat2);
- pr.AddTerapija("Prva terapija");
- pr.AddTerapija("Druga terapija");
- pr.AddTerapija("1 terapija");
- pr.AddTerapija("2 terapija");
- pr.AddTerapija("10 terapija");
- pr.AddTerapija("1 terapija");
- pr.RemoveTerapija("1");
- pr.info();
- system ("pause>0");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement