Return to Snippet

Revision: 53888
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++