/ 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; }