Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- char crt[] = "\n-----------------------------\n";
- enum Drzavljanin{ bih, hr, sr, cg, slo };
- char * opis[] = { "bih", "hr", "sr", "cg", "slo" };
- struct Datum{
- int * _dan;
- int * _mjesec;
- int * _godina;
- void unos();
- void unos(int, int, int);
- void ispis();
- void ispis(int, int, int);
- void dealociraj();
- // unos, ispis, dealociraj
- };
- void Datum::unos(){
- _dan = new int;
- _mjesec = new int;
- _godina = new int;
- cout << "Unesite datum: [dd/mm/gggg]" << endl;
- cin >> *_dan >> *_mjesec >> *_godina;
- }
- void Datum::unos(int d, int m, int g)
- {
- _dan = new int(d);
- _mjesec = new int(m);
- _godina = new int(g);
- }
- void Datum::ispis(){
- cout << "Datum: [" << *_dan << "/" << *_mjesec << "/" << *_godina << "]" << endl;
- }
- void Datum::ispis(int d, int m, int g){
- cout << "Datum: [" << d << "/" << m << "/" << g << "]" << endl;
- }
- void Datum::dealociraj(){
- delete _dan, _mjesec, _godina;
- }
- // ---------------------------------------------------------
- struct Pregled {
- Datum _datumPregleda;
- char * _dijagnoza;
- char * _terapija;
- // unos, ispis, dealociraj
- void unos();
- void unos(Datum, char*, char*);
- void ispis();
- void dealokacija();
- };
- void Pregled::unos(){
- _datumPregleda.unos();
- cin.ignore();
- int brojZnakova;
- char temp[150];
- cout << "Unesite dijagnozu:" << endl;
- cin.getline(temp, 150);
- brojZnakova = strlen(temp) + 1;
- _dijagnoza = new char[brojZnakova];
- strcpy_s(_dijagnoza, brojZnakova, temp);
- cout << "Unesite terapiju:" << endl;
- cin.getline(temp, 150);
- brojZnakova = strlen(temp) + 1;
- _terapija = new char[brojZnakova];
- strcpy_s(_terapija, brojZnakova, temp);
- }
- void Pregled::unos(Datum datumPregleda, char* dijagnoza, char*terapija){
- _datumPregleda.unos(*datumPregleda._dan, *datumPregleda._mjesec, *datumPregleda._godina);
- int brojZnakova = strlen(dijagnoza )+1;
- _dijagnoza = new char[brojZnakova];
- strcpy_s(_dijagnoza, brojZnakova, dijagnoza);
- brojZnakova = strlen(terapija) + 1;
- _terapija = new char[brojZnakova];
- strcpy_s(_terapija, brojZnakova, terapija);
- }
- void Pregled::ispis(){
- _datumPregleda.ispis();
- cout << crt << "Vasa dijagnoza: " << _dijagnoza << endl;
- cout << "Vasa terapija: " << _terapija << crt;
- }
- void Pregled::dealokacija(){
- _datumPregleda.dealociraj();
- delete [] _dijagnoza;
- delete [] _terapija;
- _dijagnoza= _terapija = NULL;
- }
- // ---------------------------------------------------------
- struct Pacijent {
- char _JMBG[14];
- char * _imePrezime;
- Datum _datumRodjenja;
- Drzavljanin _drzava;
- Pregled * _listaPregleda;
- int _brojPregleda;
- // unos, ispis, dodaj pregled, ukloni pregled, get pregledi by dijagnoza
- // get pregledi by mjesec, dealociraj
- void unos();
- void ispis(){
- cout << _JMBG << endl << _imePrezime << endl;
- _datumRodjenja.ispis();
- cout << opis[_drzava] << endl;
- for (int i = 0; i < _brojPregleda; i++)
- {
- cout << crt;
- _listaPregleda[i].ispis();
- }
- }
- void dodajPregled(Datum,char*,char*);
- void dodajPregled(Pregled);
- void ukloniPregled();
- Pregled * getPreglediByDijagnoza(char *, int &);
- Pregled * getPreglediByMjesec(int, int &);
- void dealokacija();
- };
- void Pacijent::unos(){
- cout << crt << "Unesite JMBG: " << endl;
- cin.getline(_JMBG, 14);
- cout << crt;
- int brojZnakova;
- char temp[40];
- cout << crt<< "Unesite ime i prezime:" << endl;
- cin.getline(temp, 40);
- brojZnakova = strlen(temp) + 1;
- _imePrezime = new char[brojZnakova];
- strcpy_s(_imePrezime, brojZnakova, temp);
- cout << crt;
- _datumRodjenja.unos();
- int unos;
- cout << crt << "Unesite drzavu: |bih-1, hr-2, sr-3, cg-4, slo-5|" << endl;
- cin >> unos;
- unos--;
- _drzava = (Drzavljanin)unos;
- _brojPregleda = 0;
- _listaPregleda = nullptr;
- }
- void Pacijent::dodajPregled(Datum dp, char*d, char*t){
- Pregled * temp = new Pregled[_brojPregleda + 1];
- for (int i = 0; i < _brojPregleda; i++)
- temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
- delete[]_listaPregleda;
- _listaPregleda = temp;
- _listaPregleda[_brojPregleda].unos(dp, d, t);
- _brojPregleda++;
- }
- void Pacijent::dodajPregled(Pregled novi){
- Pregled * temp = new Pregled[_brojPregleda + 1];
- for (int i = 0; i < _brojPregleda; i++)
- temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
- delete[]_listaPregleda;
- _listaPregleda = temp;
- _listaPregleda[_brojPregleda].unos(novi._datumPregleda, novi._dijagnoza, novi._terapija);
- _brojPregleda++;
- }
- void Pacijent::ukloniPregled(){
- for (int i = 0; i < _brojPregleda; i++)
- {
- cout << "PREGLED " << i + 1 << endl;
- _listaPregleda[i].ispis();
- }
- int izbor;
- do {
- cout << "Izaberi pregled koji zelite ukloniti: ";
- cin >> izbor;
- } while (izbor < 1 || izbor > _brojPregleda);
- izbor--;
- Pregled * temp = new Pregled[_brojPregleda - 1];
- for (int i = 0; i < _brojPregleda - 1; i++){
- if (i >= izbor){temp[i].unos(_listaPregleda[i+1]._datumPregleda, _listaPregleda[i+1]._dijagnoza, _listaPregleda[i+1]._terapija);}
- else temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);}
- delete[]_listaPregleda;
- _listaPregleda = temp;
- _brojPregleda--;
- }
- Pregled * Pacijent::getPreglediByDijagnoza(char * dijagnoza, int & brojPregleda){
- int brojac=0;
- for (int i = 0; i < _brojPregleda; i++)
- if (strstr(_listaPregleda[i]._dijagnoza, dijagnoza) != 0)
- brojac++;
- Pregled * temp = new Pregled[brojac];
- for (int i = 0; i < brojac; i++)
- temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
- brojPregleda = brojac;
- return temp;
- }
- Pregled * Pacijent::getPreglediByMjesec(int m, int & brojPregleda){
- int brojac = 0;
- for (int i = 0; i < _brojPregleda; i++)
- if (m == *_listaPregleda[i]._datumPregleda._mjesec)
- brojac++;
- Pregled * temp = new Pregled[brojac];
- for (int i = 0; i < brojac; i++)
- temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
- brojPregleda = brojac;
- return temp;
- }
- void Pacijent::dealokacija(){
- delete[]_imePrezime;
- _datumRodjenja.dealociraj();
- for (int i = 0; i < _brojPregleda; i++)
- _listaPregleda[i].dealokacija();
- delete[]_listaPregleda;
- }
- int main()
- {
- Pacijent denis;
- denis.unos();
- Datum dp;
- dp.unos(8, 2, 2013);
- denis.dodajPregled(dp, "Dijagnoza 1", "Terapija 1");
- dp.unos(10, 46, 2014);
- denis.dodajPregled(dp, "Dijagnoza 2", "Terapija 2");
- dp.unos(10, 6, 2014);
- denis.dodajPregled(dp, "Dijagnoza 3", "Terapija 3");
- denis.ukloniPregled();
- denis.ispis();
- denis.dealokacija();
- system("pause>null");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement