/ Published in: C++
zad c: modifikacija
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <cstdlib> #include <ctime> #include "biblioteka_vrijeme.cpp" using namespace std; struct tpodaci{ int broj_pacijenta; int vrijeme_cekanja; int vrijeme_pregleda; int hitnost_intervencije; int pregledan; }polje[10000] , tmp; typedef tpodaci elementtype; //#include "red_polje.h" #include "red_pokazivac.h" int main(){ vrijeme_pocetak(); srand((unsigned)time(NULL)); int n; int i; int br = 0; int br2 = 0; int k = 1; int j; red *red1 , *red2, *red3, *red4; red1 = new red; red2 = new red; red3 = new red; red4 = new red; InitQ(red1); InitQ(red2); InitQ(red3); InitQ(red4); cout << " Simulacija rada lijecnicke ordinacije " << endl; cout << "\nUnesite broj pacijenata za posjetu lijecniku: "; cin >> n; cout << "\nBr. pacijenta\tVrijeme cekanja\tVrijeme pregleda\tHitnost intervencije"<< endl; int a; for (a = 0 ; a < n ; a++){ polje[a].vrijeme_cekanja = rand()%1000 +1; polje[a].vrijeme_pregleda = rand()%1000 +1; polje[a].hitnost_intervencije = rand()%4 + 1; polje[a].broj_pacijenta = a + 1; polje[a].pregledan = 0; cout << polje[a].broj_pacijenta << "\t\t" << polje[a].vrijeme_cekanja << " \t\t" << polje[a].vrijeme_pregleda << "\t\t\t" << polje[a].hitnost_intervencije << endl; } cout<<" Slanje pacijenata u red prema hitnosti intervencije. "; cout<<"Red 1 - Kriticni slucaj \nRed 2 - Rizicni slucaj\nRed 3 - Slucaj niskog rizika\nRed 4 - Nije hitan slucaj"; for(i = 0 ; i < n; i++){ if (polje[i].hitnost_intervencije == 1 && polje[i].pregledan == 0){ if(IsEmptyQ(red1)){ while(br < polje[i].vrijeme_cekanja){ br++; br2++; } br=0; EnQueueQ(polje[i] , red1); cout << polje[i].broj_pacijenta << ". pacijent ulazi u red 1." << endl; } } if (polje[i].hitnost_intervencije == 2 && polje[i].pregledan == 0){ if(IsEmptyQ(red2)){ while(br < polje[i].vrijeme_cekanja){ br++; br2++; } br=0; EnQueueQ(polje[i] , red2); cout << polje[i].broj_pacijenta << ". pacijent ulazi u red 2." << endl; } } if (polje[i].hitnost_intervencije == 3 && polje[i].pregledan == 0){ if(IsEmptyQ(red3)){ while(br < polje[i].vrijeme_cekanja){ br++; br2++; } br=0; EnQueueQ(polje[i] , red3); cout << polje[i].broj_pacijenta << ". pacijent ulazi u red 3." << endl; } } if (polje[i].hitnost_intervencije == 4 && polje[i].pregledan == 0){ if(IsEmptyQ(red4)){ while(br < polje[i].vrijeme_cekanja){ br++; br2++; } br=0; EnQueueQ(polje[i] , red4); cout << polje[i].broj_pacijenta << ". pacijent ulazi u red 4." << endl; } } cout << "Proteklo je " << br2 << " vremena." << endl; if (k > 1) k--; if (IsEmptyQ(red1)){ if (IsEmptyQ(red2)){ if (IsEmptyQ(red3)){ tmp = FrontQ(red4); DeQueueQ(red4); } else{ tmp = FrontQ(red3); DeQueueQ(red3); } } else{ tmp = FrontQ(red2); DeQueueQ(red2); } } else{ tmp = FrontQ(red1); DeQueueQ(red1); } cout << tmp.broj_pacijenta << ". pacijent ulazi u ordinaciju." << endl; if (IsEmptyQ(red1)) cout<<"Red 1 je prazan."<<endl; else cout << "Na celu reda 1 je " << FrontQ(red1).broj_pacijenta <<". pacijent " << endl; if (IsEmptyQ(red2)) cout << "Red 2 je prazan" << endl; else cout << "Na celu reda 2 je " << FrontQ(red2).broj_pacijenta <<". pacijent "<< endl; if (IsEmptyQ(red3)) cout << "Red 3 je prazan" << endl; else cout << "Na celu reda 3 je " << FrontQ(red3).broj_pacijenta <<". pacijent "<< endl; if (IsEmptyQ(red4)) cout << "Red 4 je prazan" << endl; else cout << "Na celu reda 4 je " << FrontQ(red4).broj_pacijenta <<". pacijent "<< endl; tmp.pregledan = 1; for(j=0; j<tmp.vrijeme_pregleda; j++){ br++; br2++; if((i + k < n) && (br == polje[i+k].vrijeme_cekanja)){ if (polje[i+k].hitnost_intervencije == 1){ EnQueueQ(polje[i+k] , red1); polje[i+k].pregledan=1; cout << "Nakon " << j+1 << ". vremena, "<<i+k+1 << ". pacijent ulazi u red 1." <<endl; } if (polje[i+k].hitnost_intervencije == 2){ EnQueueQ(polje[i+k] , red2); polje[i+k].pregledan=1; cout << "Nakon " << j+1 << ". vremena, "<< i+k+1<< ". pacijent ulazi u red 2." <<endl; } if (polje[i+k].hitnost_intervencije == 3){ EnQueueQ(polje[i+k] , red3); polje[i+k].pregledan=1; cout << "Nakon " << j+1 << ". vremena, "<< i+k+1<< ". pacijent ulazi u red 3." <<endl; } if (polje[i+k].hitnost_intervencije == 4){ EnQueueQ(polje[i+k] , red4); polje[i+k].pregledan=1; cout << "Nakon " << j+1 << ". vremena, "<< i+k+1<< ". pacijent ulazi u red 4." <<endl; } br = 0; k++; } } cout << tmp.broj_pacijenta << ". pacijent izlazi iz ordinacije" << endl; cout << "Proteklo vremena: " << br2 << endl << endl; } while(!IsEmptyQ(red4)){ cout <<FrontQ(red4).broj_pacijenta<< ". pacijent ulazi u ordinaciju." << endl; cout<<"Red 1 je prazan."<<endl; cout<<"Red 2 je prazan."<<endl; cout<<"Red 3 je prazan"<<endl; tmp = FrontQ(red4); DeQueueQ(red4); if (IsEmptyQ(red4)) cout << "Red 4 je prazan" << endl; else cout << "Na celu reda 4 je " << FrontQ(red4).broj_pacijenta << endl; cout <<tmp.broj_pacijenta<< ". pacijent izlazi iz ordinacije" << endl; cout << "Proteklo vremena: " << br2+tmp.vrijeme_pregleda << endl << endl; }; vrijeme_kraj(); cout<<"Stvarno vrijeme trajanja programa je: "<<vrijeme_proteklo()<<endl; system ("pause"); return 0; }