Return to Snippet

Revision: 53606
at November 29, 2011 10:19 by tomi91


Initial Code
#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;
}

Initial URL


Initial Description
Glavni program - simulacija lijecnicke ordinacije

Initial Title
glavni_program.cpp

Initial Tags


Initial Language
C++