Advertisement
neogz

PR1 - dijagnoza pregled pacijent

Sep 16th, 2014
396
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 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. struct Pregled{
  8.     char * _dijagnoza;
  9.     double _cijenaPregleda;
  10.     void Unos(){
  11.         char temp[1000];
  12.         cout << "Unesite dijagnozu (# -za prekid):" << endl;
  13.         cin.getline(temp, 1000, '#');
  14.         int vel = strlen(temp) + 1;
  15.         _dijagnoza = new char[vel];
  16.         strcpy(_dijagnoza, temp);
  17.  
  18.         double cijena;
  19.         cout << "Unesite cijenu pregleda: ";
  20.         cin >> cijena;
  21.         cin.ignore();
  22.     }
  23.     void Ispis(){
  24.         cout << crt << "Dijagnoza: \n" << _dijagnoza << endl << "Cijena pregleda: " << _cijenaPregleda << crt;
  25.     }
  26. };
  27. struct Pacijent{
  28.     char *_imePrezime;
  29.     Pregled * _pregledi[10];
  30.     int _brojPosjeta;
  31.     void Unos(){
  32.         char temp[50];
  33.         cout << "Unesite ime i prezime: " << endl;
  34.         cin.getline(temp, 50);
  35.         _imePrezime = new char[strlen(temp + 1)];
  36.  
  37.         _brojPosjeta = 0;
  38.     }
  39.     void Ispis(){
  40.         cout << crt << "Ime i prezime: " << _imePrezime << endl;
  41.         for (int i = 0; i < _brojPosjeta; i++)
  42.             _pregledi[i]->Ispis();
  43.     }
  44.     void AddPregled(){
  45.         if (_brojPosjeta < 10){
  46.             _pregledi[_brojPosjeta] = new Pregled;
  47.             _pregledi[_brojPosjeta]->Unos();
  48.             _brojPosjeta++;
  49.         }
  50.         else cout << "Greska, nema dovoljno mjesta!" << endl;
  51.     }
  52.     double GetUkupneTroskove(){
  53.         double s = 0;
  54.         if (_brojPosjeta == 0) return 0;
  55.         for (int i = 0; i < _brojPosjeta; i++){
  56.             s += _pregledi[i]->_cijenaPregleda;
  57.         }
  58.         return s;
  59.     }
  60. };
  61. void PovratNovca(Pacijent * pok, int max){
  62.     double cijenaPregleda, troskovi;
  63.     cout << "Unesite koliko kosta pregled: ";
  64.     cin >> cijenaPregleda;
  65.     cin.ignore();
  66.     for (int i = 0; i < max; i++){
  67.         troskovi = pok[i].GetUkupneTroskove();
  68.  
  69.         if (troskovi > cijenaPregleda){
  70.             cout << crt <<"Ime i prezime pacijenta: " << pok[i]._imePrezime << endl;
  71.             double povrat = pok[i].GetUkupneTroskove() *0.1;
  72.             for (int j = 0; j < pok[i]._brojPosjeta; j++)  pok[i]._pregledi[j]->_cijenaPregleda *= 0.9;
  73.             cout << "Pacijentu treba vratiti: " << povrat << "KM." << crt;
  74.         }
  75.         else cout << "Pacijent nije preplatio cijenu." << endl;
  76.     }
  77. }
  78. void PretragaPoDijagnozi(Pacijent * pok, int max){
  79.     char * dijagnoza;
  80.     char temp[100];
  81.     cout << "Unesite kljucni tekst za pretragu (# - za prekid): " << endl;
  82.     cin.getline(temp, 100, '#');
  83.    
  84.     dijagnoza = new char[strlen(temp + 1)];
  85.     strcpy(dijagnoza, temp);
  86.    
  87.     int brosoba = 0;
  88.     for (int i = 0; i < max; i++){
  89.         for (int j = 0; j < pok[i]._brojPosjeta; j++){
  90.             int br = 0;
  91.             if (strstr(pok[i]._pregledi[j]->_dijagnoza, dijagnoza) != NULL){
  92.                 br++; brosoba++;
  93.                 if (br < 2) cout << pok[i]._imePrezime << endl;
  94.             }
  95.  
  96.         }
  97.     }
  98.     cout << "Broj osoba kod kojih je detektovana traΕΎena fraza je: " << brosoba << endl;
  99. }
  100. int main(){
  101.     int brPac = 0;
  102.     cout << "Za koliko pacijenata zelite inicijalizirati podatke: ";
  103.     cin >> brPac;
  104.     cin.ignore();
  105.  
  106.     Pacijent * niz = new Pacijent[brPac];
  107.     for (int i = 0; i < brPac; i++){
  108.         niz[i].Unos();
  109.         for (int j = 0; j < 3; j++){
  110.             niz[i]._pregledi[j]->Unos();
  111.         }
  112.     }
  113.     PretragaPoDijagnozi(niz, 3);
  114.     PovratNovca(niz, 3);
  115.  
  116.     //dealokacija
  117.     for (int i = 0; i < brPac; i++){
  118.         delete[] niz[i]._imePrezime;
  119.         for (int j = 0; j < niz[i]._brojPosjeta; j++){ 
  120.             delete[]    niz[i]._pregledi[j]->_dijagnoza;
  121.         }
  122.     }
  123.     delete[] niz;
  124.  
  125.     system("pause > null");
  126.     return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement