Revision: 53844
Updated Code
at December 3, 2011 02:19 by nleskovar
Updated Code
//red_pokazivac.h
#include <cstdlib>
#include <iostream>
using namespace std;
struct tpacijent
{ int rbp;
int x;
int y;
int z;
};
struct t{
tpacijent vrij;
t *sljedeci;
};
struct q{
t *front, *rear;
};
void initq(q *queue){
queue->front=(t*)malloc(sizeof(t));
queue->front->sljedeci=NULL;
queue->rear=queue->front;
cout<<"Red je inicijaliziran"<<endl;
};
bool isemptyq(q*queue){
if(queue->front==queue->rear) return true;
else return false;
};
void enqueueq(tpacijent x,q *queue){
t *pom;
pom=new t;
pom->vrij=x;
pom->sljedeci=NULL;
queue->rear->sljedeci=pom;
queue->rear=pom;
};
void dequeueq(q*queue){
t *pom;
if(isemptyq(queue)) cout<<"Red je prazan";
else{
pom=queue->front;
queue->front=queue->front->sljedeci;
free(pom);
}
};
tpacijent frontq(q *queue){
if(isemptyq(queue)) cout<<"Red je prazan";
else return (queue->front->sljedeci->vrij);
};
//red_polje.h
#include <cstdlib>
#include <iostream>
using namespace std;
struct tpacijent
{ int rbp;
int x;
int y;
int z;
};
struct q{
tpacijent vrij[10000];
int front, rear;
};
int addone(int i){
return ((i+1)%10000);
};
void initq(q*queue){
queue->front=0;
queue->rear=9999; //zadnji el polja
cout<<"red je inicijaliziran"<<endl;
};
bool isemptyq(q *queue){
if(addone(queue->rear)==queue->front) return true;
else return false;
};
void enqueueq(tpacijent x, q*queue){
if(addone(addone(queue->rear))==(queue->front)) cout<<"red je pun";
else {
queue->rear=addone(queue->rear);
queue->vrij[queue->rear]=x;
}
};
void dequeueq(q *queue){
if(isemptyq(queue)) cout<<"red je prazan";
else queue->front=addone(queue->front);
};
tpacijent frontq(q*queue){
if(isemptyq(queue)) cout<<"red je prazan";
else return (queue->vrij[queue->front]);
};
//glavni
#include <cstdlib>
#include <iostream>
#include <ctime>
#include "red_pokazivac.h"
//#include "red_polje.h"
using namespace std;
int n;
clock_t time1,time2;
double pocetak(){
time1=clock();
return time1;
};
double kraj(){
time2=clock();
return time2;
};
double proteklo(){
return time2-time1;
};
void generiranje(q*pacijenti){
srand(time(0));
cout<<"Koliko parova zelite generirati? (1-10000)"<<endl;
cin>>n;
tpacijent novi;
for(int i=0;i<n;i++){
novi.rbp=i+1;
novi.x=((rand()%10001)/1000)+1;
novi.y=((rand()%10001)/1000)+1;
novi.z=(rand()%4)+1;
enqueueq(novi,pacijenti);
}
};
void primanje(q *pacijenti){
pocetak();
cout<<"Ispis svih pacijenata"<<endl;
tpacijent tekuci;
if(isemptyq(pacijenti)) cout<<"Red je prazan"<<endl;
for(int i=0;i<n;i++){
tekuci=frontq(pacijenti);
dequeueq(pacijenti);
cout<<"pacijent br....."<<tekuci.rbp<<endl;
cout<<"cekanje:........"<<tekuci.x<<" min"<<endl;
cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl;
cout<<"*************************"<<endl;
enqueueq(tekuci,pacijenti);
}
kraj();
cout<<"Vrijeme trajanja u sekundama: "<<proteklo()/1000<<endl;
};
void modifikacija(q *pacijenti){
pocetak();
tpacijent ord[10000];
int brojac=0;
while(!isemptyq(pacijenti)){
ord[brojac]=frontq(pacijenti);
brojac++;
dequeueq(pacijenti);}
bool zamjena=true;
for(int i=n-1;i>0&&zamjena; i--){
zamjena=false;
for(int j=0;j<i;j++){
if(ord[j].z>ord[j+1].z){
tpacijent pom=ord[j];
ord[j]=ord[j+1];
ord[j+1]=pom;
zamjena=true;
}
if(ord[j].z==ord[j+1].z){
if(ord[j].x<ord[j+1].x){
tpacijent pom=ord[j];
ord[j]=ord[j+1];
ord[j+1]=pom;
zamjena=true;
}
}
}
}
for(int i=0;i<n;i++) enqueueq(ord[i],pacijenti);
cout<<"Stanje reda"<<endl;
tpacijent tekuci;
if(isemptyq(pacijenti)) cout<<"red je prazan"<<endl;
while(!isemptyq(pacijenti)){
tekuci=frontq(pacijenti);
dequeueq(pacijenti);
cout<<"pacijent br....."<<tekuci.rbp<<endl;
cout<<"cekanje:........"<<tekuci.x<<" min"<<endl;
cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl;
cout<<"prioritet:......"<<tekuci.z<<endl;
cout<<"***********************"<<endl;
}
enqueueq(tekuci,pacijenti);
kraj();
cout<<"Vrijeme trajanja u sekundama: "<<proteklo()/1000<<endl;
}
int main()
{
int izbor;
q *pacijenti;
pacijenti=new q;
initq(pacijenti);
do{
cout<<"*********I Z B O R N I K**********: "<<endl;
cout<<"1) generiranje pacijenata"<<endl;
cout<<"2) Primanje pacijenata"<<endl;
cout<<"3) Primanje pacijenata prema prioritetu"<<endl;
cout<<"9) za kraj programa"<<endl;
cin>>izbor;
switch(izbor){
case 1:
generiranje(pacijenti); break;
case 2:
primanje(pacijenti);break;
case 3:
modifikacija(pacijenti);break;
default: break;
}}
while(izbor!=9);
system("PAUSE");
return 0;
}
Revision: 53843
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 3, 2011 02:17 by nleskovar
Initial Code
//red_pokazivac.h
#include <cstdlib>
#include <iostream>
using namespace std;
struct tpacijent
{ int rbp;
int x;
int y;
int z;
};
struct t{
tpacijent vrij;
t *sljedeci;
};
struct q{
t *front, *rear;
};
void initq(q *queue){
queue->front=(t*)malloc(sizeof(t));//alociranje pokazivaA?i?1A-��?��1a front
queue->front->sljedeci=NULL;
queue->rear=queue->front;
cout<<"Red je inicijaliziran"<<endl;
};
bool isemptyq(q*queue){
if(queue->front==queue->rear) return true;
else return false;
};
void enqueueq(tpacijent x,q *queue){
t *pom;
pom=new t;
pom->vrij=x;
pom->sljedeci=NULL;
queue->rear->sljedeci=pom;
queue->rear=pom;
};
void dequeueq(q*queue){
t *pom;
if(isemptyq(queue)) cout<<"Red je prazan";
else{
pom=queue->front;
queue->front=queue->front->sljedeci;
free(pom);
}
};
tpacijent frontq(q *queue){
if(isemptyq(queue)) cout<<"Red je prazan";
else return (queue->front->sljedeci->vrij);
};
//red_polje.h
#include <cstdlib>
#include <iostream>
using namespace std;
struct tpacijent
{ int rbp;
int x;
int y;
int z;
};
struct q{
tpacijent vrij[10000];
int front, rear;
};
int addone(int i){
return ((i+1)%10000);
};
void initq(q*queue){
queue->front=0;
queue->rear=9999; //zadnji el polja
cout<<"red je inicijaliziran"<<endl;
};
bool isemptyq(q *queue){
if(addone(queue->rear)==queue->front) return true;
else return false;
};
void enqueueq(tpacijent x, q*queue){
if(addone(addone(queue->rear))==(queue->front)) cout<<"red je pun";
else {
queue->rear=addone(queue->rear);
queue->vrij[queue->rear]=x;
}
};
void dequeueq(q *queue){
if(isemptyq(queue)) cout<<"red je prazan";
else queue->front=addone(queue->front);
};
tpacijent frontq(q*queue){
if(isemptyq(queue)) cout<<"red je prazan";
else return (queue->vrij[queue->front]);
};
//glavni
#include <cstdlib>
#include <iostream>
#include <ctime>
#include "red_pokazivac.h"
//#include "red_polje.h"
using namespace std;
int n;
clock_t time1,time2;
double pocetak(){
time1=clock();
return time1;
};
double kraj(){
time2=clock();
return time2;
};
double proteklo(){
return time2-time1;
};
void generiranje(q*pacijenti){
srand(time(0));
cout<<"Koliko parova �¾elite generirati? (1-10000)"<<endl;
cin>>n;
tpacijent novi;
for(int i=0;i<n;i++){
novi.rbp=i+1;
novi.x=((rand()%10001)/1000)+1;
novi.y=((rand()%10001)/1000)+1;
novi.z=(rand()%4)+1;
enqueueq(novi,pacijenti);
}
};
void primanje(q *pacijenti){
pocetak();
cout<<"Ispis svih pacijenata"<<endl;
tpacijent tekuci;
if(isemptyq(pacijenti)) cout<<"Red je prazan"<<endl;
for(int i=0;i<n;i++){
tekuci=frontq(pacijenti);
dequeueq(pacijenti);
cout<<"pacijent br....."<<tekuci.rbp<<endl;
cout<<"cekanje:........"<<tekuci.x<<" min"<<endl;
cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl;
cout<<"*************************"<<endl;
enqueueq(tekuci,pacijenti);
}
kraj();
cout<<"Vrijeme trajanja u sekundama: "<<proteklo()/1000<<endl;
};
void modifikacija(q *pacijenti){
pocetak();
tpacijent ord[10000];
int brojac=0;
while(!isemptyq(pacijenti)){
ord[brojac]=frontq(pacijenti);
brojac++;
dequeueq(pacijenti);}
bool zamjena=true;
for(int i=n-1;i>0&&zamjena; i--){
zamjena=false;
for(int j=0;j<i;j++){
if(ord[j].z>ord[j+1].z){
tpacijent pom=ord[j];
ord[j]=ord[j+1];
ord[j+1]=pom;
zamjena=true;
}
if(ord[j].z==ord[j+1].z){
if(ord[j].x<ord[j+1].x){
tpacijent pom=ord[j];
ord[j]=ord[j+1];
ord[j+1]=pom;
zamjena=true;
}
}
}
}
for(int i=0;i<n;i++) enqueueq(ord[i],pacijenti);
cout<<"Stanje reda"<<endl;
tpacijent tekuci;
if(isemptyq(pacijenti)) cout<<"red je prazan"<<endl;
while(!isemptyq(pacijenti)){
tekuci=frontq(pacijenti);
dequeueq(pacijenti);
cout<<"pacijent br....."<<tekuci.rbp<<endl;
cout<<"cekanje:........"<<tekuci.x<<" min"<<endl;
cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl;
cout<<"prioritet:......"<<tekuci.z<<endl;
cout<<"***********************"<<endl;
}
enqueueq(tekuci,pacijenti);
kraj();
cout<<"Vrijeme trajanja u sekundama: "<<proteklo()/1000<<endl;
}
int main()
{
int izbor;
q *pacijenti;
pacijenti=new q;
initq(pacijenti);
do{
cout<<"*********I Z B O R N I K**********: "<<endl;
cout<<"1) generiranje pacijenata"<<endl;
cout<<"2) Primanje pacijenata"<<endl;
cout<<"3) Primanje pacijenata prema prioritetu"<<endl;
cout<<"9) za kraj programa"<<endl;
cin>>izbor;
switch(izbor){
case 1:
generiranje(pacijenti); break;
case 2:
primanje(pacijenti);break;
case 3:
modifikacija(pacijenti);break;
default: break;
}}
while(izbor!=9);
system("PAUSE");
return 0;
}
Initial URL
Initial Description
simulacija rada lijecnicke ordinacije
Initial Title
rad lijecnicke ordinacije
Initial Tags
Initial Language
C++