欢迎光临散文网 会员登陆 & 注册

final

2023-03-30 09:04 作者:君子子瞻  | 我要投稿

#include<stdio.h>


#include<string.h>


struct PCB{


char name[10];


int arr_time;


int bur_time;


int sta_time;


int fin_time;


int T;


double W;


}


int num;


struct PCB p[10];


int n;


void creat_Process(){


printf("请输入创建进程个数:\n");


scanf("%d",&num);


for(int i=1;i<=num;i++){


printf("进程名称、到达时间、服务时间:\n");


scanf("%s",&p[i].name);


scanf("%d",&p[i].arr_time);


scanf("%d",&p[i].bur_time);


}}


void display(){


for(int i=1;i<=num;i=++){


printf(" \t%s",p[i].name);}


printf(" \n到达时间");


for(i=1;i<=num;i++){


printf("\t%d",p[i].arr_time);}


printf(" \n服务时间");


for(i=1;1<=num;i++){


printf("\t%d",p[i].bur_time);}


printf("\n开始运行时间");


for(i=1;i<=num;i++){


printf("\t%d",p[i].sta_time);}


printf("\n完成时间");


for(i=1;i<=num;i++){


printf("\t%d",p[i].fin_time);}


printf("\n周转时间");


for(i=1;i<=num;i++){


printf("\t%d",p[i].T);}


printf("\n带权周转时间");


for(i=1;i<=num;i++){


printf("\t%.1lf",p[i].W);}}


void FCFS(){


for( int i=1;i<=num;i++){


for(int j=i+1;j<=num;j++){


if(p[i].arr_time>p[j].arr_time){


p[0]=p[j];


p[j]=p[i];


p[i]=p[0];}}}


p[1].sta_time=p[1].arr_time;


p[1].fin_time=p[1].arr_time+p[1].bur_time;


p[1].T=p[1].fin_time-p[1].arr_time;


p[1].W=P[1].T/P[1].bur_time;


for(i=2;i<=num;i++){


p[i].sta_time=p[i-1].sta_time+p[i-1].bur_time;


p[i].fin_time=p[i-1].fin_time+p[i].bur_time; 

p[i].T=p[i].fin_time-p[i].arr_time;

p[i].W=(double)p[i].T/p[i].bur_time;}

double sum_T=0;

double sum_W=0;

for(i=1;i<=sum;i++)

{

sum_T+=p[i].T;

sum_W+=p[i].w;}

double o_T=sum_T/num;

double o_W=sum_W/num;

printf("\nFCFS");

display();

printf("\n平均周转时间:%.2lf",o_T);

printf("\n平均带权周转时间:%.2lf",o_W);}

viod SJF(){

for( int i=1;i<=num;i++){


for(int j=1;j<=num;j++){


if(p[j].arr_time>p[j+1].arr_time){


p[0]=p[j];


p[j]=p[j+1];


p[j+1]=p[0];}

else if(p[j].arr_time==p[j+1].arr_time){

if(p[j].bur_time>p[j+1].bur_time){

p[0]=p[j];


p[j]=p[j+1];


p[j+1]=p[0];

}

}

}

p[1].sta_time=p[1].arr_time;


p[1].fin_time=p[1].arr_time+p[1].bur_time;


p[1].T=p[1].fin_time-p[1].arr_time;


p[1].W=P[1].T/P[1].bur_time;

int time=p[1].fin_time;

for(i=2;i<=num;i++){

for(int j=i+1;j<=num;j++){

if(time>p[j].arr_time){

if(p[i].bur_time>p[j].bur_time){

p[0]=p[j];


p[j]=p[i];


p[i]=p[0];}}

else{

continue}

}

p[i].sta_time=p[i-1].sta_time+p[i-1].bur_time;


p[i].fin_time=p[i-1].fin_time+p[i].bur_time; 

p[i].T=p[i].fin_time-p[i].arr_time;

p[i].W=(double)p[i].T/p[i].bur_time;

}

double sum_T=0;

double sum_W=0;

for(i=1;i<=sum;i++)

{

sum_T+=p[i].T;

sum_W+=p[i].w;}

double o_T=sum_T/num;

double o_W=sum_W/num;

printf("\nSJF");

display();

printf("\n平均周转时间:%.2lf",o_T);

printf("\n平均带权周转时间:%.2lf",o_W);}

viod menu(){

printf("\t*************************\n");

printf("\t*\t1.创建新进程             *\n");

printf("\t*\t2.先来先服务问题               *\n");

printf("\t*\t3.短作业优先问题           *\n");

printf("\t*\t4.退出程序           *\n");

printf("\t*************************\n");}

int main(){

int n;

menu();

while(1){

printf("\n\n请输入你的选择:\n");

scanf("%d",&n);

switch(n){

case 1:

creat_Process();

break;

case 2:

FCFS();

break;

case 3:

SJF();

break;

case 4:

printf("Bye");

return 0;

}}}


final的评论 (共 条)

分享到微博请遵守国家法律