| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
 先来先服务FCFS进程调度模拟 
下面程序默认认为上一个进程结束前,下一个进程就已经到达,如果要增加一种情况,即上一个进程结束前,下一个进程还没有到达,程序计算周转时间仍然正确,如何修改程序? 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h>  
#include <conio.h>  
#define  N  5 
struct  PCB 
{ 
        char name[8]; 
        int  arrive_time; 
        int  run_time; 
    int finish_time; 
        int  zhouzhuan_time; 
}; 
int  total=0;  
struct  PCB  pcb[N],temp; 
float sum1,sum2,average=0; 
void  output() 
{    
    printf("----------------------------------------------------------------------------------------------\n"); 
    printf("进程名  到达时间  运行时间  完成时间  周转时间  带权周转时间  \n"); 
        printf("----------------------------------------------------------------------------------------------\n"); 
    for(int  i=0;i<N;i++) 
        { 
                average=(float)pcb[i].zhouzhuan_time/pcb[i].run_time; 
                sum1=sum1+pcb[i].zhouzhuan_time; 
                sum2=sum2+average; 
                  printf(" %s        %d         %d         %d         %d        %.2f\n",pcb[i].name,pcb[i].arrive_time,pcb[i].run_time,pcb[i].finish_time,pcb[i].zhouzhuan_time,average); 
        } 
        printf("          平均                           "); 
printf("%.2f        %.2f\n",sum1/N,sum2/N); 
    printf("----------------------------------------------------------------------------------------------\n"); 
} 
void  main() 
{    
    
        int i,j; 
        for ( i=0;i<N;i++) 
        { 
                printf("请输入进程名\n" ); 
        scanf("%s",pcb[i].name); 
                printf("请输入到达时间:"); 
                scanf("%d",&pcb[i].arrive_time); 
                printf("请输入要运行时间"); 
                scanf("%d",&pcb[i].run_time);                 
        } 
        for( i=0;i<N;i++) 
        {                  printf("%s    ",pcb[i].name); 
        printf("%d    ",pcb[i].arrive_time); 
                printf("%d \n",pcb[i].run_time); 
    } 
 
        pcb[0].finish_time=pcb[0].arrive_time+pcb[0].run_time; 
        pcb[0].zhouzhuan_time=pcb[0].finish_time-pcb[0].arrive_time; 
 
          for(i=1;i<N;i++) 
        {          
          
            
            pcb[i].finish_time=pcb[i-1].finish_time+pcb[i].run_time; 
            pcb[i].zhouzhuan_time=pcb[i].finish_time-pcb[i].arrive_time; 
          
        }    
        output(); 
} 
 |   
 
 
 
 |