/ Published in: C++
                    
                                        
Glavni program - simulacija lijecnicke ordinacije
                
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
#include <iostream>
#include <iomanip>
#include <ctime>
#include "red_polje.h"
//#include "red_pokazivac.h"
using namespace std;
void ispis(int parovi[], int prioritet[], int br) { // Prikaz stanja
cout<<"--------------------------------------------------\n";
cout<<setw(10)<<"-Xi-"<<setw(10)<<"-Yi-"<<setw(26)<<"-Prioritet-\n";
cout<<"--------------------------------------------------\n";
for(int i=0; i<br; i++)
cout<<setw(10)<<parovi[i]<<setw(10)<<parovi[br+i]<<setw(20)<<prioritet[i]<<endl;
cout<<"--------------------------------------------------\n";
}
void f1(int parovi[], int prioritet[], int br) { // Generiranje pacijenata
srand((unsigned)time(0));
for(int i=0; i<br; i++){
parovi[i]=rand()%10000+1;
parovi[br+i]=rand()%10000+1;
prioritet[i]=rand()%4+1;
}
}
void f2(int parovi[], int br) { // Simulacija cekaonice
red *queue=InitQ(queue); // inicijalizacija praznog reda
int ulaz,izlaz,j,i,pom;
ulaz=izlaz=j=i=pom=0; // ulaz=0 -> prethodno vrijeme
pomocna x;
while(j<br){
x.x=parovi[j];
x.y=parovi[br+j++];
EnQueueQ(x, queue);
cout<<++i<<". pacijent:\n";
pom=FrontQ(queue).x;
cout<<"Na celu reda je: "<<pom<<endl; // prikaz reda
cout<<"Vrijeme dolaska: "<<ulaz<<endl;
izlaz=FrontQ(queue).y;
cout<<"Vrijeme unutra: "<<izlaz<<endl;
ulaz+=izlaz; // + proteklo vrijeme yi
cout<<"Vrijeme odlaska: "<<ulaz<<endl<<endl;
ulaz+=pom; // + xi jedinica "ceka" sljedeci pacijent
DeQueueQ(queue);
}
cout<<"----------------------------------------------------------------\n";
cout<<"Simulacija je gotova!\n";
delete [] queue;
}
void f3(int parovi[], int prioritet[], int br) { // Simulacija cekaonice (modifikacija)
int *paroviB = new int[2*br];
int *prioritetB = new int[2*br];
int i,j,tmpA,tmpB,tmpC;
for(i=0; i<br; i++){ // kopiranje u pomocna polja
paroviB[i]=parovi[i];
paroviB[br+i]=parovi[br+i];
prioritetB[i]=prioritet[i];
}
for(i=1;i<br;i++){ // uzlazno sortiranje umetanjem
tmpA=prioritetB[i]; // atributi za zamjenu
tmpB=paroviB[i];
tmpC=paroviB[br+i];
j=i-1;
while(j>=0 && prioritetB[j]>tmpA){
prioritetB[j+1]=prioritetB[j];
paroviB[j+1]=paroviB[j];
paroviB[br+j+1]=paroviB[br+j--];
}
prioritetB[j+1]=tmpA;
paroviB[j+1]=tmpB;
paroviB[br+j+1]=tmpC;
}
f2(paroviB,br); //simulacija
delete [] paroviB, prioritetB;
}
void simuliraj(int parovi[], int prioritet[], int br, int zadatak){
cout<<"Prikaz stanja na pocetku\n";
ispis(parovi,prioritet,br);
double pocetak=clock();
if(zadatak==1) f2(parovi,br); // poziv funkcije za simulaciju
else f3(parovi,prioritet,br); // poziv funkcije za simulaciju (modifikacija)
double kraj=clock();
cout<<"Vrijeme simuliranja: "<<(kraj-pocetak)<<" stotinki sekunde!\n\n";
}
void izbornik(int *&parovi, int *&prioritet, int br){
int izbor,generirano=0;
do{
system("cls");
cout << "1. Generiranje pacijenata" << endl;
cout << "2. Pokretanje simulacije cekaonice" << endl;
cout << "3. Pokretanje simulacije cekaonice (modifikacija)" << endl;
cout << "9. Izlaz iz programa\n" << endl;
cout << "Vas izbor: ";
cin >> izbor;
if(generirano==0 && izbor!=9 && izbor!=1){
cout<<"Prvo odaberite generiranje pacijenata!\n";
system("pause"); continue;
}
switch(izbor){
case 1:
f1(parovi,prioritet,br);
generirano=1;
ispis(parovi,prioritet,br);
break;
case 2: simuliraj(parovi,prioritet,br,1); break;
case 3: simuliraj(parovi,prioritet,br,2); break;
case 9: cout<<"Kraj !!!\n"; break;
default: cout<<"Krivi unos\n";
}
system("pause");
}while(izbor!=9);
}
int main() {
int br;
cout<<"Program za simulaciju rada lijecnicke ordinacije\n...\nUnesite broj pacijenata: ";
cin>>br;
int *parovi = new int[2*br];
int *prioritet = new int[2*br];
izbornik(parovi, prioritet, br); // poziv izbornika
delete [] parovi, prioritet;
return 0;
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                