Return to Snippet

Revision: 53909
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++