波达塔卡结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了波达塔卡结构相关的知识,希望对你有一定的参考价值。
zadatak iz SP-a
//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; }
以上是关于波达塔卡结构的主要内容,如果未能解决你的问题,请参考以下文章