c++模拟处理机调度的SJF调度算法(短作业优先)

版权声明:个人博客网址 https://29dch.github.io/ GitHub网址 https://github.com/29DCH,欢迎大家前来交流探讨和star+fork! 转载请注明出处! https://blog.csdn.net/CowBoySoBusy/article/details/84576393

实验内容:本实验首先输入进程的个数,然后输入进程名称,最后输入每个进程提交到系统的时间和每个进程所需要的处理时间。然后通过模拟程序,显示以下信息:
1)处理机对进程的调度过程。
2)计算这N个进程的平均周转时间。
注意:
1、 作业在运行过程中不能抢断,只有作业运行完毕才能允许其它作业运行。
2、 如果两个作业的处理时间相等,则提交时间早的优先执行。
输入:
4
A 0.1 5
B 0.1 3
C 2 3
D 5 8

输出:
在这里插入图片描述
这里输出样例有点问题,应该是8.05

代码:

#include <bits/stdc++.h>
using namespace std;
struct sjf
{
    string name;
    double s_time,p_time,sta_time,fin_time;
} SJF[1000];
bool cmp(sjf a,sjf b)
{
    if(a.p_time==b.p_time)
        return a.s_time<b.s_time;
    return a.p_time<b.p_time;
}
bool cmp1(sjf a,sjf b)
{
    if(a.s_time==b.s_time)
        return a.p_time<b.p_time;
    return a.s_time<b.s_time;
}
int main()
{
    int n,k,j,temp;
    double sum;
    while(cin>>n)
    {
        sum=0.0;
        for(int i=0; i<n; i++)
            cin>>SJF[i].name>>SJF[i].s_time>>SJF[i].p_time;
        sort(SJF,SJF+n,cmp1);
        for(int i=0; i<n-1; i++)
        {
            k=0,j=0;
            for(j=i+1; j<n; j++)
            {
                if(SJF[j].s_time<SJF[i].p_time)
                    k++;
            }
            temp=i+1;
            sort(SJF+temp,SJF+temp+k,cmp);
        }
        for(int i=0; i<n; i++)
        {
            if(!i)
            {
                SJF[i].sta_time= SJF[i].s_time;
                SJF[i].fin_time=SJF[i].sta_time+SJF[i].p_time;
            }
            else
            {
                SJF[i].sta_time= SJF[i-1].fin_time;
                SJF[i].fin_time=SJF[i].sta_time+SJF[i].p_time;
            }
        }
        cout<<"作业号 "<<"提交时间 "<<"所需时间 "<<"开始时间 "<<"完成时间"<<endl;
        for(int i=0; i<n; i++)
            cout<<SJF[i].name<<"\t"<<SJF[i].s_time<<"\t"<<SJF[i].p_time<<"\t"<<SJF[i].sta_time<<"\t"<<SJF[i].fin_time<<endl;
        for(int i=0; i<n; i++)
        {
            sum+=(SJF[i].fin_time-SJF[i].s_time);
        }
        cout<<"平均周转时间为: "<<sum/n*1.0<<endl;
    }
    return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CowBoySoBusy/article/details/84576393
今日推荐