Return to Snippet

Revision: 53854
at December 3, 2011 02:54 by tjelcic1


Initial Code
//main
#include <iostream>
#include <ctime>
#include "red_pokazivaci.h"
using namespace std;

red *a; 


 
 int izbor;
void drugi(int polje[],int n )

{    
  time_t start, end;
             time(&start);
     
     int brojac=0,vrijeme_ulaz=0,vrijeme_izlaz=0;
     int tunutra=0,tvani=0;
     
     
     
     pacijent osoba;
     for(int i=0;i<n;i++)
     {
             osoba.x[i]=polje[i];
             osoba.y[i]=polje[i+n];
             cout<<"x= "<< osoba.x[i]<<endl;
            cout<< osoba.y[i]<<endl<<endl<<endl;
             EnQueneQ(osoba,a);
             }
             while(brojac<n)
             {
                        cout<<"pacijent broj "<<brojac+1<<" je unutra "<<endl;
                        cout<<"pacijent je dosao "<<vrijeme_ulaz<<endl;
                        tunutra=FrontQ(a).y[brojac];
                        tvani=FrontQ(a).x[brojac];
                        vrijeme_ulaz+=tunutra;
                        cout<<"unutra je bio "<<tunutra<<endl;  
                        cout<<"pacijent odlazi "<<vrijeme_ulaz<<endl;
                        vrijeme_ulaz+=tvani;
                        DeQueneQ(a);        
                        brojac++;
                        
             }
             
             time(&end);
  cout<<endl<<"Vrijeme izvodjena programa: "<<difftime(end,start)<<endl;
}






void treci(int *polje,int n)
{
             time_t start, end;
             time(&start);
pacijent osoba;
int pom1,pom2,pom3;
for(int i=0;i<n;i++){
                    osoba.x[i]=polje[i];
                    osoba.y[i]=polje[i+n];
                    osoba.prioritet[i]=polje[2*n+i];
                    cout<<" prioriteti prije gledanja "<<osoba.prioritet[i]<<endl;
                    }
cout<<endl;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
{
        if(osoba.prioritet[i]<osoba.prioritet[j]){
                                                  pom1=osoba.prioritet[i];
                                                  pom2=osoba.x[i];
                                                  pom3=osoba.y[i];                                                 
                                                  osoba.prioritet[i]=osoba.prioritet[j];
                                                  osoba.prioritet[j]=pom1;
                                                  osoba.x[i]=osoba.x[j];
                                                  osoba.x[j]=pom2;
                                                  osoba.y[i]=osoba.y[j];
                                                  osoba.y[j]=pom3;
                                                  }

        else if(osoba.prioritet[i] == osoba.prioritet[j]){
                                                         if(osoba.x[i]<osoba.x[j])
                                                         {
                                                  pom1=osoba.prioritet[i];
                                                  pom2=osoba.x[i];
                                                  pom3=osoba.y[i];  
                                                  osoba.prioritet[i]=osoba.prioritet[j];
                                                  osoba.prioritet[j]=pom1;
                                                  osoba.x[i]=osoba.x[j];
                                                  osoba.x[j]=pom2;
                                                  osoba.y[i]=osoba.y[j];
                                                  osoba.y[j]=pom3;
                                                                               }
                                                         }
                     }                                    }
int polje1[3*n+1];
for(int i=0;i<n;i++)
{
        polje1[i]=osoba.x[i];
        polje1[i+n]=osoba.y[i];
        polje1[i+2*n]=osoba.prioritet[i];
        cout<<"prioriteti poslije sortiranja "<<osoba.prioritet[i]<<endl;
        
        }
cout<<endl;
            time(&end);
  cout<<endl<<"Vrijeme izvodjena programa: "<<difftime(end,start)<<endl;
drugi(polje1,n);
}

     



void random(int n,int izbor1)
{
           int a[3*n+1];
    time_t qTime;
time(&qTime);
srand(qTime);
      rand();
      for(int i=0;i<n;i++)
      {
               a[i]=rand()%10000+1;
          
               a[i+n]=rand()%10000+1;
               a[2*n+i]=rand()%4+1;
              
      }
      for(int i=0;i<n;i++)
      {
              cout<<a[i]<<","<<a[i+n]<<endl;
      }
      
      if(izbor1==1) drugi(a,n);
      if(izbor1==2) treci(a,n);
  
         
      
}






int main ()
{
 
a = InitQ(a);
int n;
cout<<"1-Random vrijednosti polja i prikaz reda "<<endl;
cout<<"2-rad s prioritetima "<<endl;
cout<<"unesite izbor "<<endl;
cin>>izbor;
switch (izbor)
{
       case 1:
            cout<<"Koliko parova zelite unijeti "<<endl;
            cin>>n;
        random(n,1);
       break;
       
       case 2:cout<<"Koliko parova zelite unijeti "<<endl;
       cin>>n;
       random(n,2);
         break;
          

         

            
           
}    
    
system("pause");
return 0;    
}

//red pokazivac


struct pacijent
{
 int x[10001],y[10001];
       int prioritet[10001];
};

struct elem
{
	pacijent e;
	elem *s;
};

struct red
{
	elem *p,*z;
};

typedef struct pacijent element;
typedef struct red queue;

red* InitQ(red *Q)
{
	elem *novi = new elem;
	Q = new red;
	novi -> s = NULL;
	Q -> z = novi;
	Q -> p = novi;
	return Q;
}

pacijent FrontQ(red *Q)
{
   return Q -> p -> s -> e;
}

void EnQueneQ(element x, red *Q)
{
	elem *novi = new elem;
	novi -> e = x;
	novi -> s = NULL;
	Q -> z -> s = novi; 
	Q -> z = novi;
}

void DeQueneQ(red *Q)
{
	elem *brisi = Q -> p;
	Q -> p = brisi -> s;
	delete brisi;
}

bool IsEmptyQ(red *Q)
{
	if(Q -> z == Q -> p)
		return true;
	return false;
}



//red_polje

struct pacijent{

       int x[10001],y[10001];
       int prioritet[10001];
};

struct red{
	pacijent e[10000];
	int p, z;
};

typedef struct red queue;
typedef struct pacijent element;

red* InitQ(red *Q){
    Q = new red;
	Q -> p = 0;
	Q -> z = 9999;
	return Q;
}


int AddOne(int n)
{
	return ((n+1)%10000);
}

element FrontQ(red *Q)
{
    return Q -> e[Q -> p];    
}

void EnQueneQ(element x, red *Q)
{
    Q -> z = AddOne(Q -> z);
    Q -> e[Q -> z] = x;
}

void DeQueneQ(red *Q)
{
	  Q -> p = AddOne(Q -> p);
}

bool IsEmptyQ(red *Q)
{
	if(AddOne(Q -> z) == Q -> p)
		return true;
	return false;
}

Initial URL


Initial Description
zadatak iz SP-a

Initial Title
strukture podataka

Initial Tags
c++

Initial Language
C++