/ Published in: C++
zadatak 3. koristene varijable tipa clock_t
Expand |
Embed | Plain Text
#include<iostream> #include<stdlib.h> #include<ctime> #include "red_polje.h" void generiranje(reda *Q, podaci *polje,int N){ srand(time(0)); for(int i=0;i<N;i++){ polje[i].a=rand()%10000+1; polje[i].b=rand()%10000+1; polje[i].c=rand()%4+1; polje[i].d=i+1; cout<<"a:"<<polje[i].a<<endl; cout<<"b:"<<polje[i].b<<endl; } system("pause"); } void stanje(reda *Q, int N){ podaci novi; for(int i=0;i<N;i++){ novi=FrontQ(Q); cout<<"a:"<<novi.a<<endl; cout<<"b:"<<novi.b<<endl; } cout<<"========================"<<endl; } void stanje1(reda *Q,int N){ podaci novi; for(int j=0;j<N;j++){ novi=FrontQ(Q); cout<<"a:"<<novi.a<<endl; cout<<"b:"<<novi.b<<endl; EnQueueQ(novi,Q); DeQueueQ(Q); } cout<<"========================"<<endl; } void simulacija(reda *Q, podaci *polje,int N){ system("cls"); cout<<"Simuliranje:"<<endl<<"U red ulazi pacijent 1."<<endl; podaci novi; novi.a=polje[0].a; novi.b=polje[0].b; novi.c=polje[0].c; novi.c=polje[0].d; int i=1; clock_t endwait; EnQueueQ(novi,Q); novi=FrontQ(Q); int M; do{ cout<<"Prikaz stanja reda:"<<endl; stanje1(Q,i); endwait = clock () + polje[i].a; novi.a=polje[i].a; novi.b=polje[i].b; novi.c=polje[i].c; novi.d=polje[i].d; while (clock() < endwait) {} cout<<"U red ulazi pacijent "<<i+1<<"."<<endl; EnQueueQ(novi,Q); i++; }while(i<N); cout<<"Prikaz stanja reda:"<<endl; stanje1(Q,i); i=0; do{ M=N-1; cout<<i+1<<". pacijent ulazi u ordinaciju"<<endl; endwait = clock () + polje[i].b; while (clock() < endwait) {} cout<<i+1<<". pacijent izlazi iz ordinacije"<<endl; DeQueueQ(Q); cout<<"prikaz stanja reda:"<<endl; M-=i; stanje1(Q,M); i++; }while(i<N); if(IsEmptyQ(Q))cout<<"red je prazan"<<endl; system("pause"); } void simulacija1(reda *Q, podaci *polje,int N){ system("cls"); cout<<"Simuliranje:"<<endl<<"U red ulazi pacijent 1."<<endl; podaci novi; novi.a=polje[0].a; novi.b=polje[0].b; novi.c=polje[0].c; novi.d=polje[0].d; cout<<"Prioritet:"<<polje[0].c<<endl; int i=1; clock_t endwait; EnQueueQ(novi,Q); int M=N-1; do{ cout<<"Prikaz stanja reda:"<<endl; stanje1(Q,i); endwait = clock () + polje[i].a; novi.a=polje[i].a; novi.b=polje[i].b; novi.c=polje[i].c; novi.d=polje[i].d; while (clock() < endwait) {} cout<<"U red ulazi pacijent "<<i+1<<"."<<endl; cout<<"Prioritet:"<<polje[i].c<<endl; EnQueueQ(novi,Q); i++; }while(i<N); cout<<"Prikaz stanja reda:"<<endl; stanje1(Q,i); int prioritet=1,broj=0; reda *pomocni=InitQ(pomocni); int brojac; bool ponavljanje; do{ ponavljanje=false; i=0; brojac=0; do{ novi=FrontQ(Q); if(novi.c==prioritet){ if(broj!=0){ endwait = clock () + polje[i].b; while (clock() < endwait) {} } cout<<novi.d<<". pacijent ulazi u ordinaciju."<<endl; DeQueueQ(Q); } else{ ponavljanje=true; EnQueueQ(novi,pomocni); DeQueueQ(Q); brojac++; } i++; broj++; }while(i<N); prioritet++; for(int j=0;j<brojac;j++){ novi=FrontQ(pomocni); EnQueueQ(novi,Q); DeQueueQ(pomocni); } cout<<"prikaz reda nakon izbacivanja elemenata s prioritetom:"<<prioritet-1<<endl; stanje1(Q,brojac); N=brojac; }while(ponavljanje); if(IsEmptyQ(Q))cout<<"red je prazan"<<endl; system("pause"); } int main(){ reda *Q=InitQ(Q); int izbor; int N; podaci *polje; do{ system("cls"); cout<<"1.Generiranje slučajnih brojeva:"<<endl; cout<<"2.Prijenos parova brojeva u red te ispis stanja reda tijekom simulacije"<<endl; cout<<"3.Dodavanje prioriteta pacijentima."<<endl; cout<<"9.Izlaz"<<endl; cin>>izbor; switch(izbor){ case 1: system("cls"); cout<<"Koliko parova brojeva zelite generirati"<<endl; cin>>N; polje=new podaci[N]; generiranje(Q,polje,N); break; case 2: simulacija(Q,polje,N); break; case 3: simulacija1(Q,polje,N); break; } }while(izbor!=9); return 0; }
You need to login to post a comment.
