/ Published in: C++
Main program
Expand |
Embed | Plain Text
#include <iostream> #include <ctime> #include "red_pokazivac.h" using namespace std; osoba polje[1000], gpolje[1000]; int broj=0; clock_t vrijeme1, vrijeme2; void gen () { cout << "\nUnesite broj generirajucih parova: "; do cin >> broj; while (broj<1 || broj>10000); osoba b; for (int i=0; i<broj; i++) { b.a=rand()%4+1; b.x=rand()%10000+1; b.y=rand()%10000+1; gpolje[i]=b; } cout << "\nZapisi su uspjesno dodani u polje.\n"; 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).a>a && broj<0) broj=i; EnQueueQ(FrontQ(red), red); DeQueueQ(red); } if (broj>=0) return broj; return -1; } void sim (bool w) { for (int i=0; i<broj; i++) polje[i]=gpolje[i]; vrijeme1=clock(); if (!broj) { cout << "\nPolje je prazno!\n"; system ("pause"); return; } int a=0, br=0, mjesto; osoba ord; cout << endl; while (a<broj || !IsEmptyQ(red)) { if (!a) { ord=polje[a]; a++; cout << "Prva osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena."; if (w) cout << "\nNjezin prioritet je " << ord.a << "."; } else if (a<broj) { if (ord.y>polje[a].x) { ord.y-=polje[a].x; cout << "Nova osoba je usla u cekaonicu."; if (!w) EnQueueQ(polje[a], red); else { cout << " Njezin prioritet je " << polje[a].a << "."; mjesto=provjera(polje[a].a, br); if (mjesto>=0) { provjera(5, mjesto); EnQueueQ(polje[a], red); provjera(5, br-mjesto); if (mjesto) cout << "\nOsoba je preskocila " << br-mjesto << " osoba/e u redu jer ima veci prioritet."; else cout << "\nOsoba je dosla na celo reda jer ima najveci prioritet."; } else EnQueueQ(polje[a], red); } br++; a++; cout << "\nU cekaonici je trenutno " << br << " osoba."; cout << "\nOsoba u ordinaciji ce biti tamo jos " << ord.y << " jedinica vremena."; } else if (ord.y<polje[a].x) { polje[a].x-=ord.y; if (IsEmptyQ(red)) { ord=polje[a]; a++; } else { ord=FrontQ(red); DeQueueQ(red); br--; } cout << "Nova osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena."; if (w) cout << "\nNjezin prioritet je " << ord.a << "."; cout << "\nU cekaonici je trenutno " << br << " osoba."; } else { cout << "Nova osoba je usla u cekaonicu."; if (!w) EnQueueQ(polje[a], red); else { cout << " Njezin prioritet je " << polje[a].a << "."; mjesto=provjera(polje[a].a, br); if (mjesto>=0) { provjera(5, mjesto); EnQueueQ(polje[a], red); provjera(5, br-mjesto); if (mjesto) cout << "\nOsoba je preskocila " << br-mjesto << " osoba/e u redu jer ima veci prioritet."; else cout << "\nOsoba je dosla na celo reda jer ima najveci prioritet."; } else EnQueueQ(polje[a], red); } a++; ord=FrontQ(red); DeQueueQ(red); cout << "\nNova osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena."; if (w) cout << "\nNjezin prioritet je " << ord.a << "."; cout << "\nU cekaonici je trenutno " << br << " osoba."; } } else { ord=FrontQ(red); DeQueueQ(red); cout << "Nova osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena."; br--; if (w) cout << "\nNjezin prioritet je " << ord.a << "."; cout << "\nU cekaonici je trenutno " << br << " osoba."; } cout << "\n\n------------------\n"; system ("pause"); cout << "------------------\n\n"; } vrijeme2=clock(); cout << "-*-Simulacija je gotova.-*-\n"; system ("pause"); } void vrijeme () { cout << "\nZadnja simulacija je trajala " << (float)(vrijeme2-vrijeme1)/1000 << " sekundi.\n"; system ("pause"); } int main () { InitQ(red); int a; srand(time(0)); rand(); do { system ("cls"); cout << "1. Generiranje niza parova\n"; cout << "2. Simulacija cekaonice ordinacije\n"; cout << "3. Simulacija cekaonice ordinacije sa prioritetom\n"; cout << "4. Ispis vremena trajanja zadnje simulacije\n"; cout << "0. Izlaz iz programa\n"; cout << "Unesite izbor: "; do cin >> a; while (a<0 || a>4); switch (a) { case 1: gen(); break; case 2: sim(false); break; case 3: sim(true); break; case 4: vrijeme(); } } while (a); return 0; }
You need to login to post a comment.
