Revision: 53830
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 2, 2011 23:41 by davor
Initial Code
#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;
}
Initial URL
Initial Description
zad c: modifikacija
Initial Title
zad c: modifikacija
Initial Tags
Initial Language
C++