Return to Snippet

Revision: 54164
at December 13, 2011 17:35 by boki567


Initial Code
#include <iostream>
#include <ctime>
#include "polje_red.h"

using namespace std;

pacijent pacijenti[10000];
int broj=0;
clock_t vrij_poc, vrij_kraj;

void generiraj () {
     cout << "Unesite broj parova koje zelite generirati: "<<endl;
     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 << ".";
              cout<<"---------------------------------"<<endl;}
 
           else if (a<broj) {
              if (pct.y>pacijenti[a].x) {
              pct.y-=pacijenti[a].x;
              cout << "Novi pacijent je u cekaonici."<<endl;
              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 << "Pacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta."<<endl;
              else cout << "Pacijent je dosao na celo reda zbog najveceg prioriteta."<<endl;}
                        else EnQueueQ(pacijenti[a], red);
                        }
                   brojac++;
                   a++;
                   cout<<"---------------------------------"<<endl;
                   cout << "U cekaonici su/je " << brojac << " pacijenta."<<endl;
                   cout << "Pacijent  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 << "On ima prioritet broj " << pct.prior << "."<<endl;
                     cout << "U 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 << "Pacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta."<<endl;
                             else cout << "Pacijent je dosao na celo reda zbog najveceg prioriteta."<<endl;}
                          else EnQueueQ(pacijenti[a], red);}
                     a++;
                     pct=FrontQ(red);
                     DeQueueQ(red);
                     cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena."<<endl;
                     if (w) cout << "On ima prioritet broj: " << pct.prior << "."<<endl;
                     cout << "U 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 << "---------------------------------"<<endl;
                system ("pause");
                cout << "---------------------------------";
                }
                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 << "1. Generiranje parova"<<endl;
        cout << "2. Simuliranje cekaonice ordinacije"<<endl;
        cout << "3. Simuliranje cekaonice ordinacije sa prioritetom"<<endl;
        cout << "4. Vrijeme trajanja zadnje simulacije"<<endl;
        cout << "0. Izlaz"<<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
Glavni program zadatka 3

Initial Title
glavni_program_bonikolic

Initial Tags
3

Initial Language
C++