zoukankan      html  css  js  c++  java
  • 操作系统实验2

    #include <stdio.h>
    #define n 10
    
    struct jcb{
        int name;           //进程名
        float arrtime;         //进程到达时间
        float reqtime;       //进程运行时间
        float ftime;         //进程完成时间
        float cyclingtime;           //周转时间
        float welght;        //带权周转时间(周转系数)
        int arun;          //进程到达运行
    }f[n];
    
    void fcfs(struct jcb f[n],int jobnum);
    void result(struct jcb f[n],int jobnum);
    
    void main(){	
    
    	struct jcb f[n];
    	int jobnum,i,j,m;
    	float a,r;
    
    	printf("作业个数:");
    	scanf("%d",&jobnum);
    
    	for(i=0;i<jobnum;i++){
    	printf("
    第%d个作业",i+1);
    	printf("
    输入作业名:");
    	scanf("%d",&f[i].name);
    	printf("到达时间:");
    	scanf("%f",&f[i].arrtime);
    	printf("要求服务时间:");
    	scanf("%f",&f[i].reqtime);
    	}
    
    	printf("经按到达时间排序后,未到达队列是
    ");
    //排序算法
    	for(i=0;i<jobnum;i++){
    		for(j=i+1;j<jobnum;j++){
    		if(f[j].arrtime<f[i].arrtime)
    		{
    			m=f[j].name;
    			a=f[j].arrtime;
    			r=f[j].reqtime;
    
    			f[j].name=f[i].name;
    			f[j].arrtime=f[i].arrtime;
    			f[j].reqtime=f[i].reqtime;
    
    			f[i].name=m;
    			f[i].arrtime=a;
    			f[i].reqtime=r;
    		}
    		}
    	}
    
    	printf(" 	name	arrtime	reqtime
    ");
    	for(i=0;i<jobnum;i++){
    	printf("N%d	%d	%.2f	%.2f
    ",i+1,f[i].name,f[i].arrtime,f[i].reqtime);
    	}
    	fcfs(f,jobnum);
    printf("FCFS算法作业序列表");
    printf("------------------------------------------------
    ");
    result(f,jobnum);
    
    }
    
    void fcfs(struct jcb f[n],int jobnum){
    	int i;
    	for(i=0;i<jobnum;i++){
    		if(i==0){ //第一个进程
    		f[i].cyclingtime=f[i].reqtime;
    		f[i].ftime=f[i].arrtime+f[i].reqtime;
    		}
    		else if(f[i].arrtime>f[i-1].ftime){//第i个进程到达系统时,第i-1个进程已运行完毕
    		f[i].cyclingtime=f[i].reqtime;
    		f[i].ftime=f[i].arrtime+f[i].reqtime;
    		}
    		else{//第i个进程到达系统时,第i-1个进程未运行完毕
    		f[i].cyclingtime=f[i].reqtime+f[i-1].ftime-f[i].arrtime;
    		f[i].ftime=f[i].arrtime+f[i].cyclingtime;
    		}
    		f[i].welght=f[i].cyclingtime*1.0/f[i].reqtime;
    	}
    
    }
    
    void result(struct jcb f[n],int jobnum){
    	int i;
    	float avercyclingtime;
    	float averwelght;
    	int sum_cyclingtime=0;
    	float sum_welght=0.00;
    	printf("
    作业名	到达系统时间	CPU所需时间/h	结束时间	周转时间/h
    ");
        for(i=0;i<jobnum;i++){
    	printf("%d  	%.2f     	%.2f    	%.2f       	%.2f
    ",f[i].name,f[i].arrtime,f[i].reqtime,f[i].ftime,f[i].cyclingtime);
    	
    	sum_cyclingtime=sum_cyclingtime+f[i].cyclingtime;
    	sum_welght=sum_welght+f[i].welght;
    	}
    	avercyclingtime=sum_cyclingtime*1.0/jobnum;
    	averwelght=sum_welght*1.00/jobnum;
    	printf("
    平均周转时间:%.2f
    ",avercyclingtime);
    	printf("平均带权周转时间:%.2f
    ",averwelght);
    }
    

      

  • 相关阅读:
    Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
    nyoj 635 Oh, my goddess
    nyoj 587 blockhouses
    nyoj 483 Nightmare
    nyoj 592 spiral grid
    nyoj 927 The partial sum problem
    nyoj 523 亡命逃窜
    nyoj 929 密码宝盒
    nyoj 999 师傅又被妖怪抓走了
    nyoj 293 Sticks
  • 原文地址:https://www.cnblogs.com/gzh13692021053/p/5391758.html
Copyright © 2011-2022 走看看