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++