/ Published in: C++
ovdje možete pogledati programski kod(glavni program i zaglavlja koja su korištena) za 3zadatak iz kolegija STRUKTURE PODATAKA@FOI
Expand |
Embed | Plain Text
//GLAVNI PROGRAM #include <cstdlib> #include <iostream> #include <ctime> #include "red_pokazivac.h" #include "biblioteka_vrijeme.h" //#include "red_polje.h" using namespace std; int n; void generiranje(r *pacijenti){ srand(time(0)); cout<<"Unesite zeljeni broj parova za generiranje? (1-10000)"<<endl; cin>>n; tpopis novi; for(int i=0;i<n;i++){ novi.rb=i+1; novi.x=((rand()%10001)/1000)+1; novi.y=((rand()%10001)/1000)+1; novi.p=(rand()%4)+1; enqueueq(novi,pacijenti); } }; void ispis(r *pacijenti){ vrijeme_pocetak(); cout<<"PACIJENTI"<<endl; cout<<"-----------------------------------"<<endl; tpopis tekuci; if(isemptyq(pacijenti)) cout<<"Red je prazan!"<<endl; while(!isemptyq(pacijenti)){ tekuci=frontq(pacijenti); dequeueq(pacijenti); cout<<"Pacijent broj: "<<tekuci.rb<<endl; cout<<"Cekati cete "<<tekuci.x<<" minuta."<<endl; cout<<"U ordinaciji ste "<<tekuci.y<<" minuta."<<endl; cout<<"Prednost ima: "<<tekuci.p<<endl; cout<<"-----------------------------------"<<endl; } vrijeme_kraj(); cout<<"Vrijeme izvodjenja: "<<vrijeme_proteklo()/1000<<endl; }; void nula(tpopis *polje){ for(int i=0;i<n;i++){ polje[i].rb=0; polje[i].x=0; polje[i].y=0; polje[i].p=0; } n=0; } void modifikacija(r *pacijenti){ vrijeme_pocetak(); tpopis ordinacija[10000]; int brojac=0; while(!isemptyq(pacijenti)){ ordinacija[brojac]=frontq(pacijenti); brojac++; dequeueq(pacijenti);} //sortiranje bubble sort bool zamjena=true; for(int i=n-1;i>0&&zamjena; i--){ zamjena=false; for(int j=0;j<i;j++){ if(ordinacija[j].p<ordinacija[j+1].p){ tpopis pom=ordinacija[j]; ordinacija[j]=ordinacija[j+1]; ordinacija[j+1]=pom; zamjena=true; } if(ordinacija[j].p==ordinacija[j+1].p){ if(ordinacija[j].x<ordinacija[j+1].x){ tpopis pom=ordinacija[j]; ordinacija[j]=ordinacija[j+1]; ordinacija[j+1]=pom; zamjena=true; } } } } for(int i=0;i<n;i++) enqueueq(ordinacija[i],pacijenti); cout<<"PACIJENTI:"<<endl; cout<<"-----------------------------------"<<endl; tpopis tekuci; if(isemptyq(pacijenti)) cout<<"Red je prazan!"<<endl; while(!isemptyq(pacijenti)){ tekuci=frontq(pacijenti); dequeueq(pacijenti); cout<<"Pacijent broj: "<<tekuci.rb<<endl; cout<<"Cekati cete "<<tekuci.x<<" minuta."<<endl; cout<<"U ordinaciji ste "<<tekuci.y<<" minuta."<<endl; cout<<"Prednost ima: "<<tekuci.p<<endl; cout<<"-----------------------------------"<<endl; } vrijeme_kraj(); cout<<"Vrijeme izvodjenja: "<<vrijeme_proteklo()/1000<<endl; nula(ordinacija); } int main(int argc, char *argv[]) { int izbor; r *pacijenti; pacijenti=new r; initq(pacijenti); do{ cout<<"---------IZBORNIK--------"<<endl; cout<<"-------------------------"<<endl; cout<<"1. Generiranje pacijenata"<<endl; cout<<"2. Simulacija"<<endl; cout<<"3. Modifikacija"<<endl; cout<<"4. Kraj programa"<<endl; cin>>izbor; switch(izbor){ case 1: generiranje(pacijenti); break; case 2: ispis(pacijenti);break; case 3: modifikacija(pacijenti);break; case 4: return 0; default: break; }} while(1); system("pause"); return 0; } //ZAGLAVLJE POKAZIVAČA #include <cstdlib> #include <iostream> using namespace std; struct tpopis { int rb; int x; int y; int p; }; struct t{ tpopis popis; t *sljedeci; }; struct r{ t *front, *rear; }; void initq(r *red){ red->front=(t*)malloc(sizeof(t));//alociranje pokazivaca front red->front->sljedeci=NULL; red->rear=red->front; cout<<"Red je inicijaliziran"<<endl; }; bool isemptyq(r *red){ if(red->front==red->rear) return true; else return false; }; void enqueueq(tpopis x,r *red){ t *pom; pom=new t; pom->popis=x; pom->sljedeci=NULL; red->rear->sljedeci=pom; red->rear=pom; }; void dequeueq(r *red){ t *pom; if(isemptyq(red)) cout<<"Red je trenutno prazan!"; else{ pom=red->front; red->front=red->front->sljedeci; free(pom); } }; tpopis frontq(r *red){ if(isemptyq(red)) cout<<"Red je trenutno prazan!"; else return (red->front->sljedeci->popis); }; //ZAGLAVLJE POLJA #include <cstdlib> #include <iostream> using namespace std; struct tpopis { int rb; int x; int y; int p; }; struct r{ tpopis popis[10000]; int front, rear; }; int addone(int i){ return ((i+1)%10000); }; void initq(r *red){ red->front=0; red->rear=9999; //zadnji el polja cout<<"Inicijaliziranje reda!!"<<endl; }; bool isemptyq(r *red){ if(addone(red->rear)==red->front) return true; else return false; }; void enqueueq(tpopis x, r *red){ if(addone(addone(red->rear))==(red->front)) cout<<"Red je trenutno pun!"; else { red->rear=addone(red->rear); red->popis[red->rear]=x; } }; void dequeueq(r *red){ if(isemptyq(red)) cout<<"Red je trenutno prazan!"; else red->front=addone(red->front); }; tpopis frontq(r *red){ if(isemptyq(red)) cout<<"Red je trenutno prazan!"; else return (red->popis[red->front]); };
You need to login to post a comment.
