您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页FCFSSJF进程调度算法实现C++代码

FCFSSJF进程调度算法实现C++代码

来源:保捱科技网
#include #define M 100 int i; int j;

int process_number;//进程个数 char process_name[M];//进程名 int arrival_time[M];//到达时间 int start_time[M];//开始执行时间 int services_time[M];//服务时间 int completion_time[M];//完成时间 int turn_arround_time[M];//周转时间

double right_turn_arround_time[M];//带权周转时间 int a[M]; int b[M]; int c[M]; int d[M]; int exchange; char temp; void FCFS();

void SJF();

//先来先服务调度算法

void FCFS {

cout<<\"----先来先服务调度算法(FCFS)----\"<cin>>process_number;

cout<<\"请输入进程名 进程到达时间 进程服务时间(输入'q'结束): \"<for(i=0;icin>>process_name[i];

if(process_name[i]=='q') {

break; }

cin>>arrival_time[i]; cin>>services_time[i]; }

cout<<\"进程名 完成时间

到达时间

服务时间

开始执行时间

周转时间 带权周转时间\"<for(i=0;i{

a[i]=arrival_time[i];//把到达时间赋值给a数组 }

for(i=1;ifor(j=i+1;jif(a[i]>a[j])//比较到达时间的长短,先执行最先到达的进程 {

exchange=a[i]; a[i]=a[j];

a[j]=exchange;

exchange=process_name[i]; process_name[i]=process_name[j]; process_name[j]=exchange; } }

}

for(i=1;ifor(j=1;jif(a[i]==arrival_time[j]) {

b[i]=j; break; } }

}

b[0]=arrival_time[0];

for(i=1;istart_time[b[0]]=a[0];

start_time[b[i]]=services_time[b[i]-1]+start_time[b[i]-1];//开 始执行时间

}

for(i=1;i{

completion_time[b[0]]=services_time[0];

completion_time[b[i]]=services_time[b[i]]+start_time[b[i]]; }

for(i=0;iturn_around_time[b[i]]=completion_time[b[i]]-arrival_time[b[i]]; }

for(i=0;i{

ringht_turn_arround_time[b[i]]=double(turn_around_time[b[i]])/doubl e(services_time[b[i]]);

}

for(i=0;icout<<\" \"<cout<cout<cout<cout<cout<cout<<\"-.-.-.-.-.-.-.-.-.-.-.-.\"<//短作业优先调度算法 void SJF()

{

cout<<\"----短作业优先调度算法(SJF)----\"<cin>>process_number;

cout<<\"请输入进程名 进程到达时间 进程服务时间(输入'q'结束): \"<for(i=0;icin>>process_name[i]; if(process_name[i]=='q') {

break; }

cin>>arrival_time[i]; cin>>services_time[i]; }

cout<<\"进程名 到达时间

服务时间 开始执行时间

完成时间 周转时间 带权周转时间\"<for(i=0;ia[i]=arrival_time[i];//把到达时间赋值给a数组

}

for(i=1;ifor(j=i+1;j{

if(a[i]>a[j])//比较到达时间的长短,先执行最先到达的进程 {

exchange=a[i]; a[i]=a[j];

a[j]=exchange;

temp=process_name[i];

process_name[i]=process_name[j]; process_name[j]=temp; } }

}

for(i=1;ifor(j=1;jif(a[i]==arrival_time[j]) {

b[i]=j; break; } } }

b[0]=arrival_time[0];

for(i=1;i{

start_time[b[0]]=arrival_time[b[0]];

start_time[b[i]]=services_time[b[i]-1]+start_time[b[i]-1];//开 始执行时间 }

for(i=1;ic[b[0]]=a[0];

c[b[i]]=services_time[b[i]]+start_time[b[i]]; }

for(i=0;iturn_around_time[b[i]]=c[b[i]]-arrival_time[b[i]]; }

for(i=0;iringht_turn_arround_time[b[i]]=double(turn_around_time[b[i]])/doubl e(services_time[b[i]]);

}

for(i=0;icout<<\" \"<cout<cout<cout<cout<cout<void main() {

char flag='Y'; char n;

cout<<\"-----调度算法FCFS&&SJF-----\"<cout<cout<<\"1、FCFS 算法\"<cout<<\"请您选择算法的序号: \"<>n; switch(n) {

case'1': FCFS(); break; case'2': SJF(); break; default:

cout<cout<<\"您输出有误!\"<}

cout<cout<<\"是否继续调度算法 FCFS && SJF,按'Y'or'y'钮继续,按照 'N'or'n'键退出\"<>flag; } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务