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 * DrzavljaninOpis[] { "bih", "hr", "sr", "cg", "slo" };
- struct Datum {
- int * _dan;
- int * _mjesec;
- int * _godina;
- void Unos(){
- int d, m, g;
- cout << "Unesite datum: [dd-mm-gggg] " << endl;
- cin >> d >> m >> g;
- cin.ignore();
- // -----------------------------------------
- _dan = new int(d);
- _mjesec = new int(m);
- _godina = new int(g);
- }
- void Unos(int d, int m, int g){
- _dan = new int(d);
- _mjesec = new int(m);
- _godina = new int(g);
- }
- void Ispis(){
- cout << "Datum : [" << *_dan << "/" << *_mjesec << "/" << *_godina << "]" << endl;
- }
- void Ispis(int d, int m, int g){
- cout << "Datum : [" << d << "/" << m << "/" << g << "]" << endl;
- }
- void Dealociraj(){
- delete _dan, _mjesec, _godina;
- _dan = _mjesec = _godina = nullptr;
- }
- };
- struct Pregled {
- Datum _datumPregleda;
- char * _dijagnoza;
- char * _terapija;
- // -------------------------
- void Unos(){
- _datumPregleda.Unos();
- char temp1[1000], temp2[1000];
- cout << "Unesite dijagnozu: (#-za prekid)" << endl;
- cin.getline(temp1, 1000, '#');
- int velicina = strlen(temp1) + 1;
- _dijagnoza = new char[velicina];
- strcpy_s(_dijagnoza, velicina, temp1);
- cout << "Unesite terapiju: (#-za prekid)" << endl;
- cin.getline(temp2, 1000, '#');
- velicina = strlen(temp2) + 1;
- _terapija = new char[velicina];
- strcpy_s(_terapija, velicina, temp2);
- }
- void 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 Ispis(){
- cout << crt;
- _datumPregleda.Ispis();
- cout << "\nDIJAGNOZA: " << endl << _dijagnoza << endl;
- cout << "TERAPIJA: " << endl << _terapija << crt;
- }
- void Dealokacija(){
- _datumPregleda.Dealociraj();
- delete[]_dijagnoza;
- delete[]_terapija;
- _dijagnoza = _terapija = nullptr;
- }
- };
- struct Pacijent {
- char _JMBG[14];
- char * _imePrezime;
- Datum _datumRodjenja;
- Drzavljanin _drzava;
- Pregled * _listaPregleda;
- int _brojPregleda;
- void Unos(){
- cout << "Unesite JMBG: ";
- cin.getline(_JMBG, 14);
- _imePrezime = new char[30];
- cout << "Unesite ime i prezime: ";
- cin.getline(_imePrezime, 30);
- cout << "Unesite datum rodjenja: ";
- _datumRodjenja.Unos();
- int drz;
- cout << "Unesite drzavu: (0-BIH | 1-HR | 2-SR | 3-CG | 4-SLO): ";
- cin >> drz;
- cin.ignore();
- _drzava = (Drzavljanin)drz;
- _brojPregleda = 0;
- _listaPregleda = nullptr;
- }
- void Ispis(){
- cout << _imePrezime << " " << _JMBG << endl;
- _datumRodjenja.Ispis();
- for (int i = 0; i < _brojPregleda; i++)
- _listaPregleda[i].Ispis();
- }
- void dodajPregled(Pregled p){
- 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);
- for (int i = 0; i < _brojPregleda; i++)
- _listaPregleda[i].Dealokacija();
- delete[]_listaPregleda;
- _listaPregleda = temp;
- _listaPregleda[_brojPregleda].unos(p._datumPregleda, p._dijagnoza, p._terapija);
- _brojPregleda++;
- void dodajPregled(Datum, char*, char*);
- }
- void 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);
- for (int i = 0; i < _brojPregleda; i++)
- _listaPregleda[i].Dealokacija();
- delete[]_listaPregleda;
- _listaPregleda = temp;
- _listaPregleda[_brojPregleda].unos(dp, d, t);
- _brojPregleda++;
- }
- void ukloniPregled(){
- for (int i = 0; i < _brojPregleda; i++)
- {
- cout << crt << "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);
- }
- for (int i = 0; i < _brojPregleda; i++)
- _listaPregleda[i].Dealokacija();
- delete[] _listaPregleda;
- _listaPregleda = temp;
- _brojPregleda--;
- }
- Pregled * getPreglediByDijagnoza(char * dijagnoza, int & brojPregleda){
- int brojacPregleda = 0, tempBrojacPregleda = 0;
- for (int i = 0; i < _brojPregleda; i++)
- if (!strstr(_listaPregleda[i]._dijagnoza, dijagnoza) == NULL)
- brojacPregleda++;
- Pregled * temp = new Pregled[brojacPregleda];
- for (int i = 0; i < _brojPregleda; i++)
- {
- if (!strstr(_listaPregleda[i]._dijagnoza, dijagnoza) == NULL){
- temp[tempBrojacPregleda].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
- tempBrojacPregleda++;
- }
- }
- brojPregleda = brojacPregleda;
- return temp;
- }
- Pregled * getPreglediByMjesec(int m, int & brojPregleda){
- int tempBrojacPregleda = 0, brojacPregleda = 0;
- for (int i = 0; i < _brojPregleda; i++)
- if (*_listaPregleda[i]._datumPregleda._mjesec == m) brojacPregleda++;
- Pregled * temp = new Pregled[brojacPregleda];
- for (int i = 0; i < brojacPregleda; i++)
- {
- temp[tempBrojacPregleda].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
- tempBrojacPregleda++;
- }
- brojacPregleda = brojacPregleda;
- return temp;
- }
- void Dealociraj(){
- delete[]_imePrezime;
- _datumRodjenja.Dealociraj();
- for (int i = 0; i < _brojPregleda; i++)
- _listaPregleda->Dealokacija();
- delete[] _listaPregleda;
- _imePrezime = nullptr;
- _listaPregleda = nullptr;
- }
- };
- int main(){
- Pacijent nedim;
- nedim.Unos();
- Datum dp;
- dp.Unos(10, 4, 1995);
- nedim.dodajPregled(dp, "Dijagnoza 1", "Terapija 1");
- nedim.dodajPregled(dp, "Dijagnoza 2", "Terapija 2");
- nedim.dodajPregled(dp, "Dijagnoza 3", "Terapija 3");
- nedim.ukloniPregled();
- nedim.Ispis();
- system("pause > null");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement