• 第二章


    #include<stdio.h> 
    #include<stdlib.h>   
    #define MAX 100 struct Proc 
     {    
    char Name[4];             
    int StartTime;            
    int NeedTime;            
    int RunTime;             
    int EndTime;          
    double DQZZ_Time;  
     };
    Proc proc[MAX]; 
    int sum_Time=0; 
    double sum_DQ=0;     
    int ReadFile() 
    {      
        int i=0;     
        FILE *fp;      
        fp=fopen("1.txt","r");     
        if(fp==NULL)     
        {          
            printf("打开文件失败!
    ");         
            exit(0);     
        }      
        else      
        {          
            while(!feof(fp))         
            {              
                fscanf(fp,"%s",&proc[i].Name);             
                fscanf(fp,"%d",&proc[i].StartTime);             
                fscanf(fp,"%d",&proc[i++].NeedTime);         
            }         
            fclose(fp);     
        }     
        i--; 
              
        return i; 
    }   
    void Show(int num)
     {      
        int i;     
        printf("进程名   进入时间   运行时间
    ");     
        for(i=0;i<num;i++)     
        {          
            printf("%6s%8d%10d
    ",proc[i].Name,proc[i].StartTime,proc[i].NeedTime);     
        }      
        printf("
    "); 
    }  //先来先服务算法计算  
    void FIFS(int num) 
    {      
        int i,j;      
        for(i=0;i<num;i++)     
        {          //第一个进程          
            if(i==0)          
            {              
                proc[i].RunTime=proc[i].NeedTime;              
                proc[i].EndTime=proc[i].StartTime+proc[i].RunTime;         
            }         
            else         
            {              
                if(proc[i].StartTime>proc[i-1].EndTime)             
                {                  
                    proc[i].RunTime=proc[i].NeedTime;                  
                    proc[i].EndTime=proc[i].StartTime+proc[i].RunTime;             
                }             
                else            
                {                 
                    proc[i].RunTime=proc[i].NeedTime+proc[i-1].EndTime-proc[i].StartTime;                
                    proc[i].EndTime=proc[i].StartTime+proc[i].RunTime;             
                }          
            }   
            proc[i].DQZZ_Time=proc[i].RunTime*1.0/proc[i].NeedTime;   
            sum_Time+=proc[i].RunTime;   sum_DQ+=proc[i].DQZZ_Time;    
            if(i==0) printf("%s Runing....    Others Waiting....
    
    ",proc[i].Name);   
            else    
            { 
             printf("%s Runing....    ",proc[i].Name);    for(j=0;j<i;j++)    
             {    
                 printf("%s ",proc[j].Name);    
             }     
             printf("is Finished....
    
    ");      
            }      
        } 
    }  //显示计算结果  
    void Result(int num) 
    {      
        int i;      
        printf("进程名   进入时间  结束时间  执行时间  周转时间  带权周转时间
    ");     
        for(i=0;i<num;i++)     
        {          
            printf("%6s%8d%10d%10d%10d%12.2lf
    ",proc[i].Name,proc[i].StartTime;                 
            proc[i].EndTime,proc[i].NeedTime,proc[i].RunTime,proc[i].DQZZ_Time);     
        }  
        printf("平均周转时间为:%.2lf
    ",sum_Time*1.0/num);  
        printf("平均带权周转时间为:%.2lf
    ",sum_DQ*1.0/num);     
        printf("
    "); 
    }   
    int main()  
    {      
        int num;     
        num=ReadFile();     //记录进程个数      
        Show(num);      
        FIFS(num);      
        printf("先来先服务算法得到的结果如下:
    
    ");      
        Result(num);     
        system("pause");    
        return 0; 
    }

    暂时还运行不了,还在调试中。

  • 相关阅读:
    jmeter在Windows下安装(含插件安装)
    Jenkins中agent的使用
    Jenkins自动化测试脚本的构建
    Python在Linux下编译安装
    Jenkins项目构建运行
    VIM不正常退出产生的swp文件
    SSI服务器端包含注入
    【强网杯2019】随便注
    判断网站CMS
    windows基础
  • 原文地址:https://www.cnblogs.com/VernSean/p/4468096.html
Copyright © 2020-2023  润新知