/ Published in: C++
Treći zadatak iz struktura podataka
Expand |
Embed | Plain Text
//red pokazivaci struct pacijent { int x[10001],y[10001]; int prioritet[10001]; }; struct element { pacijent e; element *s; }; struct red { element *p,*z; }; typedef struct pacijent elementent; typedef struct red queue; red* InitQ(red *Q) { element *novi = new element; Q = new red; novi -> s = NULL; Q -> z = novi; Q -> p = novi; return Q; } pacijent FrontQ(red *Q) { return Q -> p -> s -> e; } void DeQueneQ(red *Q) { element *brisi = Q -> p; Q -> p = brisi -> s; delete brisi; } void EnQueneQ(elementent x, red *Q) { element *novi = new element; novi -> e = x; novi -> s = NULL; Q -> z -> s = novi; Q -> z = novi; } 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; } //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; do{ system("cls"); cout<<"1. Random vrijednosti polja i prikaz reda "<<endl; cout<<"2. Rad s prioritetima "<<endl<<endl; cout<<"9. Kraj programa :)"<<endl; cout<<" Unesite izbor: "; cin>>izbor; cout<<endl; switch (izbor) { case 1: cout<<"Koliko parova zelite unijeti "<<endl; cin>>n; random(n,1); system("pause"); break; case 2:cout<<"Koliko parova zelite unijeti "<<endl; cin>>n; random(n,2); system("pause"); break; } }while(izbor!=9); system("pause"); return 0; }
You need to login to post a comment.
