Return to Snippet

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