Revision: 53888
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 3, 2011 05:24 by perogina
Initial Code
#include <iostream>
#include <ctime>
//#include "red_pokazivac.h"
#include "red_polje.h"
using namespace std;
pacijent pacijenti[10000];
int broj=0;
clock_t vrij_poc, vrij_kraj;
void generiraj () {
cout << "\nUnesite broj parova koje zelite generirati: ";
do cin >> broj; while (broj<1 || broj>10000);
pacijent pac;
for (int i=0; i<broj; i++) {
pac.prior=rand()%4+1;
pac.x=rand()%10000+1;
pac.y=rand()%10000+1;
pacijenti[i]=pac;
}
cout << "-----------------------------"<<endl;
cout << "Zapisi su uspjesno zapisani."<<endl;
cout << "-----------------------------"<<endl;
system ("pause");
}
int provjera (int a, int br) {
if (!br) return -1;
int broj=-1;
for (int i=0; i<br; i++) {
if (FrontQ(red).prior>a && broj<0) broj=i;
EnQueueQ(FrontQ(red), red);
DeQueueQ(red);
}
if (broj>=0) return broj;
return -1;
}
void simulacija1 (bool w) {
vrij_poc=clock();
if (!broj) {
cout<<"-----------------------------"<<endl;
cout << "Polje je prazno!"<<endl;
cout<<"-----------------------------"<<endl;
system ("pause");
return;
}
int a=0, brojac=0, mjesto;
pacijent pct;
cout << endl;
while (a<broj || !IsEmptyQ(red)) {
if (!a) {
pct=pacijenti[a];
a++;
cout<<"-----------------------------"<<endl;
cout << "Prvi pacijent je u ordinaciji. Tamo ce biti " << pct.y << " vremena." << endl;
if (w) cout << "\nOn ima prioritet broj " << pct.prior << "." << endl;
cout<<"-----------------------------"<<endl;
}
else if (a<broj) {
if (pct.y>pacijenti[a].x) {
pct.y-=pacijenti[a].x;
cout << "Novi pacijent je u cekaonici.\n";
if (!w) EnQueueQ(pacijenti[a], red);
else {
cout << " On ima prioritet broj " << pacijenti[a].prior << "." << endl;
mjesto=provjera(pacijenti[a].prior, brojac);
if (mjesto>=0) {
provjera(5, mjesto);
EnQueueQ(pacijenti[a], red);
provjera(5, brojac-mjesto);
if (mjesto) cout << "\nPacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta.\n";
else cout << "\npacijent je dosao na celo reda zbog najveceg prioriteta." << endl;
}
else EnQueueQ(pacijenti[a], red);
}
brojac++;
a++;
cout<<"-----------------------------"<<endl;
cout << "\nU cekaonici su/je " << brojac << " pacijenta.";
cout << "\nPacijent ce biti u ordinaciji jos " << pct.y << " jedinica vremena." << endl;
cout<<"-----------------------------"<<endl;
}
else if (pct.y<pacijenti[a].x) {
pacijenti[a].x-=pct.y;
if (IsEmptyQ(red)) {
pct=pacijenti[a];
a++;
}
else {
pct=FrontQ(red);
DeQueueQ(red);
brojac--;
}
cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena." << endl;
if (w) cout << "\nOn ima prioritet broj " << pct.prior << ".";
cout << "\nU cekaonici su/je: " << brojac << " pacijenta." << endl;
}
else {
cout << "Novi pacijent je usao u cekaonicu." << endl;
if (!w) EnQueueQ(pacijenti[a], red);
else {
cout << " On ima prioritet: " << pacijenti[a].prior << "." << endl;
mjesto=provjera(pacijenti[a].prior, brojac);
if (mjesto>=0) {
provjera(5, mjesto);
EnQueueQ(pacijenti[a], red);
provjera(5, brojac-mjesto);
if (mjesto) cout << "\nPacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta." << endl;
else cout << "\nPacijent je dosao na celo reda zbog najveceg prioriteta." << endl;}
else EnQueueQ(pacijenti[a], red);
}
a++;
pct=FrontQ(red);
DeQueueQ(red);
cout << "\nNovi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena." << endl;
if (w) cout << "\nOn ima prioritet broj: " << pct.prior << "." << endl;
cout << "\nU cekaonici je:" << brojac << " osoba." << endl;
}
}
else {
pct=FrontQ(red);
DeQueueQ(red);
cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti: " << pct.y << " vremena." << endl;
brojac--;
if (w) cout << "\nOn ima prioritet broj: " << pct.prior << "." << endl;
cout << "\nU cekaonici su/je: " << brojac << " pacijenta." << endl;
}
cout << "\n-----------------------------" << endl;
system ("pause");
cout << "-----------------------------\n\n";
}
vrij_kraj=clock();
cout<<"-----------------------------"<<endl;
cout << "Zavrsena simulacija." << endl;
cout<<"-----------------------------"<<endl;
system ("pause");}
void potr_vrij () {
cout<<"-----------------------------"<<endl;
cout << "\nPosljednja simulacija je trajala " << (float)(vrij_kraj-vrij_poc)/1000 << " sekundi."<<endl;
cout<<"-----------------------------"<<endl;
system ("pause");
}
int main () {
InitQ(red);
int izbor;
srand(time(0));
rand();
do {
system ("cls");
cout<<"---------------------------------------------------------"<<endl;
cout << "1. Generiranje parova"<<endl<<endl;
cout << "2. Simuliranje cekaonice ordinacije"<<endl<<endl;
cout << "3. Simuliranje cekaonice ordinacije s prioritetom"<<endl<<endl;
cout << "4. Vrijeme trajanja zadnje simulacije"<<endl<<endl;
cout << "0. Izlaz"<<endl<<endl;
cout<<"---------------------------------------------------------"<<endl;
cout << "Vas izbor: ";
do cin >> izbor; while (izbor<0 || izbor>4);
switch (izbor) {
case 1: {
generiraj(); break;
}
case 2: {
simulacija1(false); break;
}
case 3: {
simulacija1(true); break;
}
case 4: {
potr_vrij();
}
}
} while (izbor);
return 0;
}
Initial URL
Initial Description
Zadatak 3, strukture podataka
Initial Title
Main dio zadatka 3
Initial Tags
3, podataka
Initial Language
C++