Return to Snippet

Revision: 53851
at December 3, 2011 02:37 by rodjuga


Initial Code
#include <iostream>
    #include <ctime>
    #include "polje.h"
    //#include "polje.h" 
    using namespace std;
     
    void generiranje(tqu *red) // generiranje pacijenata
    {
    tpacijent pacijent;
    int n;
    cout<<"broj vremena: ";
    cin>>n;
    for(int i=0; i<n; i++)
    {
    pacijent.v1 = rand()%10000+1;
    pacijent.v2 = rand()%10000+1;
    pacijent.prioritet = rand()%4+1;
    pacijent.rbr = i+1;
    EnQueueQ(pacijent, red);
    }
    }
     
    void ispis(tpacijent pacijent)
    {
    cout<<"pacijent_"<<pacijent.rbr<<endl;  //ispis pacijenata
    cout<<"prioritet: "<<pacijent.prioritet<<endl;
    cout<<"vrijeme ulaska: "<<pacijent.v1<<" s"<<endl;
    cout<<"vrijeme izlaska: "<<pacijent.v2<<" s"<<endl<<endl;
    }
     
    void ulazak(tqu *red)
    {
    double sp,sk;
    if(IsEmptyQ(red)) return;
    sp = clock();
    while(!(IsEmptyQ(red)))                  //generiranje ulaska pacijenata
    {
    tpacijent pacijent = FrontQ(red);
    ispis(pacijent);
    DeQueueQ(red);
    }
    sk = clock();
    cout<<endl<<"proteklo vrijeme: "<<(sk-sp)/1000<<" s"<<endl;
    }
     
    void premjestanje(tqu *red, int prioritet)
    {
     
    if(IsEmptyQ(red)) return;
    tpacijent pacijent;
    tqu *red2 = InitQ(red2);
    while(!(IsEmptyQ(red)))
    {                                                 //razmje���¡taj pacijenata po prioritetima
    pacijent = FrontQ(red);
    if(pacijent.prioritet == prioritet)
    ispis(pacijent);
    else
    EnQueueQ(pacijent, red2);
    DeQueueQ(red);
    }
    memcpy(red,red2,sizeof(tqu));
    }
     
    void ulazak_P(tqu *red)
    {
    double sp,sk;
    sp = clock();
    for(int i=1; i<5; i++)                           //ulazak br 2
    premjestanje(red, i);
    sk = clock();
    if((IsEmptyQ(red)))cout<<endl<<"proteklo vrijeme: "<<(sk-sp)/1000<<" s"<<endl;
    }
     
    int main()
    {
     
    tqu *red = InitQ(red);
     
    int izbor;
    do{
    cout<<endl<<"1: generiranje vremena";
    cout<<endl<<"2: ispis (simulacija rada)";
    cout<<endl<<"3: ispis po prioritetima";
    cout<<endl<<"9: kraj";
    cout<<endl<<"vas unos:";
    cin>>izbor;
     
    switch(izbor)
    {
    case 1:generiranje(red);
    break;
    case 2:ulazak(red);
    break;
    case 3:ulazak_P(red);
    break;
     
    case 9:
    break;
    }
    }while(izbor!=9);
     
    system("pause");
    return 0;
    }


------------------------------------------------------------------------

    struct tpacijent{   //struktura tpacijent
    int v1, v2;
    int prioritet;
    int rbr;
    };
     
    struct tqu{                             //struktura tqu
    tpacijent pacijent[10000];
    int front;
    int rear;
    };
     
    int AddOne(int n)
    {
    return((n+1)%10000);
    }
     
    bool IsEmptyQ(tqu *q)    // provjeravamo je li red prazan
    {
    if(AddOne(q->rear) == q->front)
    return true;
    else
    return false;
    }
     
    tpacijent FrontQ(tqu *q)  // vra���a vrijednost elementa koji se  trenutno nalazi na ���elu reda
    {
    tpacijent pom;
    pom.v1 = 0;
    pom.v2 = 0;
    pom.prioritet = 0;
    pom.rbr = 0;
    if(IsEmptyQ(q)) return pom;
    return q->pacijent[q->front];
    }
     
    void EnQueueQ(tpacijent x, tqu *q) //stavlja element tpacijent x na po���etak reda tqu *q
    {
    q->rear = AddOne(q->rear);
    q->pacijent[q->rear] = x;
    }
     
    void DeQueueQ(tqu *q)         //bri���¡e element s ���ela reda
    {
    if(IsEmptyQ(q)) return;
    q->front = AddOne(q->front);
    }
     
    tqu* InitQ(tqu *q)    //inicira prazan red
    {
    q = new tqu;
    q->front = 0;
    q->rear = 9999;
    return q;
    }

Initial URL


Initial Description
strukture podataka,zadatak 3

Initial Title
sp_zad3_main+polje.h

Initial Tags


Initial Language
C++