⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multifeedback.cpp

📁 Multi level feed back queue
💻 CPP
字号:
#include<iostream>
//#include<conio.h>
#include<algorithm>
#include<stdlib.h>
#include<iomanip>
using namespace std;
struct process 
{
       int bt,at,pr,no,wt,att;
};bool func3(process a ,process b)
{
     if(a.pr!=b.pr)
       return a.pr<=b.pr;
     else if(a.pr==b.pr)
       return a.at<=b.at;
}bool func(process a ,process b)
{
     return a.at<b.at;
}
int front=-1,rear=-1;
//enqueue
void enqueue(process q[],process v)
{
     rear=rear+1;
     q[rear]=v;
     if(front==-1)
         front=0;
}
//dequeue
process dequeue(process q[])
{
        process v=q[front];
        if(front==rear)
            front=rear=-1;
        else
            front=front+1;
        return v;
}
//isempty
int isempty_queue(process q[])
{
    if(front==-1)
        return 1;
    else
         return 0;
}int main(){int n,i,j,loop=0;process p[100],process s[100];process q1[100],q2[100],q3[100];for(i=0;i<n;i++)
       {
                     p[i].bt=rand()%15;
                     p[i].at=i;
                     p[i].pr=rand()%(n);
                     p[i].no=i+1;
       }
    //process descriptionfor(i=0;i<n;i++)
         s[i]=p[i];for(i=0;i<n;i++)
             ex[i]=0;
    sort(p,p+n,func3);
    time=0;
    cout<<"order of execution  "<<"  ";
    while(isempty_queue(process q[]))
    {
                    j=0;
                    while(p[j].at>time || ex[j]==1)
                            j++;
                    //cout<<p[j].no<<" ";
                    p[j].wt=time-p[j].at;
                    ex[j]=1;
                    awt=awt+p[j].wt;
                    time=time+p[j].bt;		   cout<<p[j].no<<"("<<time<<")"<<" ";
                    att=att+time-p[j].at;
                    p[j].att=time-p[j].at;
    }
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -