Revision: 53851
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++