Revision: 53909
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 3, 2011 06:08 by mlcorak
Initial Code
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; #include "racunanje_vremena.cpp" struct cpacijent{ int cekanje; int obrada; int vaznost; int rbr; int gotov; }pacijent[10000] , tmp; typedef cpacijent elementtype; #include "red_cirkularno_polje.h" //#include "red_pokazivaci.h" void generiranje (int i, int n, elementtype pacijent[]){ for (i = 0 ; i < n ; i++){ pacijent[i].cekanje = rand()%1000 +1; pacijent[i].obrada = rand()%1000 +1; pacijent[i].vaznost = rand()%4 + 1; pacijent[i].rbr = i + 1; pacijent[i].gotov = 0; cout << pacijent[i].rbr << "\t\t" << pacijent[i].cekanje << " \t\t" << pacijent[i].obrada << "\t\t\t" << pacijent[i].vaznost << endl; } } int main(){ vrijeme_pocetak(); srand((unsigned)time(NULL)); int n , i , br = 0 , br2 = 0 , k = 1 , j; queue *red1 , *red2, *red3, *red4; red1 = new queue; red2 = new queue; red3 = new queue; red4 = new queue; InitQ(red1); InitQ(red2); InitQ(red3); InitQ(red4); cout << "*****************************************" << endl; cout << "*\t\tDOBRODOSLI\t\t*" << endl; cout << "* Program simulira rad hitne sluzbe *" << endl; cout << "*****************************************" << endl; do{ cout << "\nSimulaciju sa koliko pacijenata zelite R:(max 10000)? "; cin >> n; if (n>10000 || n<0) cout<<"\nUnos mora bi u rasponu izmedu 0-10000. Ponovite unos"; } while (n>10000 || n<0); cout << "\n***************************************************************"; cout << "\nBroj_pacijenta\tCekanje\t\tVrijeme_obrade\t\tHitnost"<< endl; generiranje (i,n,pacijent); cout << "\n***************************************************************\n"; cout<<"Pacijenti kako dolaze na hitnu smijestaju se prema hitnosti u jedan \n od cetiri reda (red (1),red (2),red (3),red (4))"; cout<<" kako bi se postivalo pravilo \nda pacijenti sa visim prioritetom dodu prije na red."<<endl; cout<<"red (1) => Kriticni slucajevi \nred (2) => Rizicni slucajevi\nred (3) => Slucajevi niskog rizika\nred (4) => Slucajevi koji nisu hitni"; cout << "\n***************************************************************\n\n"; for(i = 0 ; i < n; i++){ if (pacijent[i].vaznost == 1 && pacijent[i].gotov == 0){ if(IsEmptyQ(red1)){ while(br < pacijent[i].cekanje){ br++; br2++; } br=0; EnQueueQ(pacijent[i] , red1); cout << pacijent[i].rbr << ". pacijent ulazi u red (1)" << endl; } } if (pacijent[i].vaznost == 2 && pacijent[i].gotov == 0){ if(IsEmptyQ(red2)){ while(br < pacijent[i].cekanje){ br++; br2++; } br=0; EnQueueQ(pacijent[i] , red2); cout << pacijent[i].rbr << ". pacijent ulazi u red (2)" << endl; } } if (pacijent[i].vaznost == 3 && pacijent[i].gotov == 0){ if(IsEmptyQ(red3)){ while(br < pacijent[i].cekanje){ br++; br2++; } br=0; EnQueueQ(pacijent[i] , red3); cout << pacijent[i].rbr << ". pacijent ulazi u red (3)" << endl; } } if (pacijent[i].vaznost == 4 && pacijent[i].gotov == 0){ if(IsEmptyQ(red4)){ while(br < pacijent[i].cekanje){ br++; br2++; } br=0; EnQueueQ(pacijent[i] , red4); cout << pacijent[i].rbr << ". pacijent ulazi u red (4)" << endl; } } cout << "Proteklo " << br2 << " vremenskih jedinica." << 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.rbr << ". pacijent ulazi u ordinaciju." << endl; if (IsEmptyQ(red1)) cout<<"Red (1) je prazan."<<endl; else cout << "Na celu reda (1) je " << FrontQ(red1).rbr <<". pacijent " << endl; if (IsEmptyQ(red2)) cout << "Red (2) je prazan" << endl; else cout << "Na celu reda (2) je " << FrontQ(red2).rbr <<". pacijent "<< endl; if (IsEmptyQ(red3)) cout << "Red (3) je prazan" << endl; else cout << "Na celu reda (3) je " << FrontQ(red3).rbr <<". pacijent "<< endl; if (IsEmptyQ(red4)) cout << "Red (4) je prazan" << endl; else cout << "Na celu reda (4) je " << FrontQ(red4).rbr <<". pacijent "<< endl; tmp.gotov = 1; for(j = 0 ; j < tmp.obrada ; j++){ br++; br2++; if((i + k < n) && (br == pacijent[i+k].cekanje)){ if (pacijent[i+k].vaznost == 1){ EnQueueQ(pacijent[i+k] , red1); pacijent[i+k].gotov=1; cout << "Nakon " << j+1 << ". jedinice vremena, "<<i+k+1 << ". pacijent ulazi u red (1)." <<endl; } if (pacijent[i+k].vaznost == 2){ EnQueueQ(pacijent[i+k] , red2); pacijent[i+k].gotov=1; cout << "Nakon " << j+1 << ". jedinice vremena, "<< i+k+1<< ". pacijent ulazi u red (2)." <<endl; } if (pacijent[i+k].vaznost == 3){ EnQueueQ(pacijent[i+k] , red3); pacijent[i+k].gotov=1; cout << "Nakon " << j+1 << ". jedinice vremena, "<< i+k+1<< ". pacijent ulazi u red (3)." <<endl; } if (pacijent[i+k].vaznost == 4){ EnQueueQ(pacijent[i+k] , red4); pacijent[i+k].gotov=1; cout << "Nakon " << j+1 << ". jedinice vremena, "<< i+k+1<< ". pacijent ulazi u red (4)." <<endl; } br = 0; k++; } } cout << tmp.rbr << ". pacijent izlazi iz ordinacije" << endl; cout << "Proteklo jedinica: " << br2 << endl << endl; } while(!IsEmptyQ(red4)){ cout <<FrontQ(red4).rbr<< ". 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).rbr << endl; cout <<tmp.rbr<< ". pacijent izlazi iz ordinacije" << endl; cout << "Proteklo jedinica: " << br2+tmp.obrada << endl << endl; }; vrijeme_kraj(); cout<<"Stvarno vrijeme trajanja programa je "<<vrijeme_proteklo() <<"milisekundi"<<endl; system ("pause"); return 0; }
Initial URL
Initial Description
a,c,d dio glavnog programa
Initial Title
A,C,D dio programa
Initial Tags
Initial Language
C++