Advertisement
neogz

PR1 - doktori pacijenti - ispitni 4

Sep 17th, 2014
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.94 KB | None | 0 0
  1. #ifdef _MSC_VER
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #endif
  4. #include <iostream>
  5. using namespace std;
  6. char crt[] = { "\n----------------------------------\n" };
  7. // ispitni 4
  8. struct Pregled{
  9.     char *_dijagnoza;
  10.     void Unos(){
  11.         char temp[300];
  12.         cout << "Unesite dijagnozu: " << crt;
  13.         cin.getline(temp, 300);
  14.         _dijagnoza = new char[strlen(temp) + 1];
  15.         strcpy(_dijagnoza, temp);
  16.        
  17.     }
  18.     void Ispis(){
  19.         cout << crt << "Dijagnoza: " << endl << _dijagnoza << crt;
  20.     }
  21.     void Dealociraj(){
  22.         delete[]_dijagnoza;
  23.         _dijagnoza = nullptr;
  24.     }
  25. };
  26. struct Pacijent {
  27.     char * _imePrezime;
  28.     Pregled PreglediPacijenata[50];
  29.     int _brojPregleda;
  30.     void Unos(){
  31.         char temp[30];
  32.         cout << "Unesite ime i prezime: ";
  33.         cin.getline(temp, 30);
  34.         _imePrezime = new char[strlen(temp) + 1];
  35.         strcpy(_imePrezime, temp);
  36.  
  37.         _brojPregleda = 0;
  38.     }
  39.     void Ispis(){
  40.         cout << "Ime i prezime pacijenta: " << _imePrezime << endl;
  41.         for (int i = 0; i < _brojPregleda; i++)
  42.             PreglediPacijenata[i].Ispis();
  43.     }
  44.     void addPregled(){
  45.         if (_brojPregleda >= 50){ cout << "Nema vise mjesta za preglede!!!"; return; }
  46.         PreglediPacijenata[_brojPregleda].Unos();
  47.         _brojPregleda++;
  48.     }
  49.     void Dealokacija(){
  50.         delete[]_imePrezime;
  51.         _imePrezime = nullptr;
  52.     }
  53. };
  54. struct Ljekar {
  55.     char * _imePrezime;
  56.     Pacijent listaPacijenata[100];
  57.     int _brojPacijenata;
  58.     void Unos(){
  59.         char temp[30];
  60.         cout << "Unesite ime i prezime: ";
  61.         cin.getline(temp, 30);
  62.         _imePrezime = new char[strlen(temp) + 1];
  63.         strcpy(_imePrezime, temp);
  64.  
  65.         _brojPacijenata = 0;
  66.     }
  67.     void Ispis(){
  68.         cout << "Ime i prezime ljekara: " << _imePrezime << endl;
  69.         for (int i = 0; i < _brojPacijenata; i++)
  70.             listaPacijenata[i].Ispis();
  71.  
  72.     }
  73.     void addPacijenta(){
  74.         if (_brojPacijenata >= 100){ cout << "Ljekar je prebukiran!" << endl; return; }
  75.         listaPacijenata[_brojPacijenata].Unos();
  76.         _brojPacijenata++;
  77.     }
  78.     void Dealociraj(){
  79.         for (int i = 0; i < _brojPacijenata; i++)
  80.             listaPacijenata[i].Dealokacija();
  81.         delete[]_imePrezime;
  82.         _imePrezime = nullptr;
  83.     }
  84. };
  85. void DodajPodatkeOPacijentu(Ljekar * pok, int max){
  86.     int koliko;
  87.     cout << "Koliko pacijenata zelite unijeti u bazu: ";
  88.     cin >> koliko;
  89.     cin.ignore();
  90.  
  91.     for (int i = 0; i < koliko; i++){
  92.         cout <<crt<< "Dostupni ljekari su: " << endl;
  93.         for (int j = 0; j < max; j++)
  94.             pok[j].Ispis();
  95.         int izbor;
  96.         do{
  97.             cout << "Izaberite kojem ljekaru zelite dodjeliti pacijente: ";
  98.             cin >> izbor;
  99.             cin.ignore();
  100.         } while (izbor <0 || izbor > max);
  101.  
  102.         pok[izbor].addPacijenta();
  103.  
  104.     }
  105. }
  106. void DodajPodatkeOPregledu(Ljekar * pok, int max){
  107.     char temp[30];
  108.     cout << "Unesite ime i prezime pacijenta kojem zelite dodati podatke o pregledu: " << endl;
  109.     cin.getline(temp,30);
  110.     char * ime = new char[strlen(temp) + 1];
  111.     strcpy(ime, temp);
  112.  
  113.     for (int i = 0; i < max; i++){
  114.         for (int j = 0; j < pok->_brojPacijenata; j++){
  115.             if (strcmp(pok[i].listaPacijenata[j]._imePrezime, ime) == 0){
  116.                 pok[i].listaPacijenata[j].addPregled();
  117.             }
  118.         }
  119.     }
  120. }
  121. int main(){
  122.    
  123.     //korisniku omoguciti da definise broj ljekara unutar institucije, te za svakog od njih inicijalizira potrebne podatke
  124.     int brLjekara = 0;
  125.     cout << "Koliko ljekara radi u instituciji: ";
  126.     cin >> brLjekara;
  127.     cin.ignore();
  128.  
  129.     Ljekar *  doktori = new Ljekar[brLjekara];
  130.     for (int i = 0; i < brLjekara; i++)
  131.         doktori[i].Unos();
  132.  
  133.     // koristeci odg globalnu funciju, korisniku omoguciti dodavanje podataka o pacijentima te zatim dodavanje podataka o pregledima
  134.     DodajPodatkeOPacijentu(doktori, brLjekara);
  135.     DodajPodatkeOPregledu(doktori, brLjekara);
  136.    
  137.     // ispisati podatke o svim ljekarima, pacijentima i njihovim pregledima
  138.     for (int i = 0; i < brLjekara; i++){
  139.         doktori[i].Ispis();
  140.         for (int j = 0; j < doktori[i]._brojPacijenata; j++){
  141.             doktori[i].listaPacijenata[j].Ispis();
  142.             for (int z = 0; z < doktori[i].listaPacijenata[j]._brojPregleda; z++){
  143.                 doktori[i].listaPacijenata[j].PreglediPacijenata[z].Ispis();
  144.             }
  145.         }
  146.     }
  147.  
  148.     system("pause > null");
  149.     return 0;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement