zoukankan      html  css  js  c++  java
  • 系统作业调度 实验二

    #include <stdio.h>
    #include <string.h>
    
    void   main()
    {
        int    i=0,j=0,finishtime=0,rotatetime=0,n=0,k=0,l,m;
        float a,b;
        int starttime,temp,max=1;
        int reachtime[24],runtime[24];
        FILE   *fp;
        char  str[1000];
        fp=fopen("d:/diaodu.txt","rt");
        if(fp==NULL)
        {
            printf("cannot open file
    ");
            return;
        }
        printf("到达时间	所需运行时间
    ");
        while (fgets(str,1000,fp))
        {
            sscanf(str,"%d,%d
    ",reachtime+i,runtime+i);
            
            printf("%d		%d
    ",reachtime[i],runtime[i]);
            i++;
        }
        fclose(fp);
            for(j=0;j<i;j++) 
            {
                for (k=0;k<i-j;k++) 
                {
                    if (reachtime[k]>reachtime[k+1]) 
                     {
                        temp=runtime[k];    
                        runtime[k]=runtime[k+1]; 
                        runtime[k+1]=temp;
                        temp=reachtime[k];                    
                        reachtime[k]=reachtime[k+1]; 
                        reachtime[k+1]=temp;
                    }   
                }
            }
        printf("***********************
    ");
        printf("1.fcfs
    2.SJF
    3.HRRN
    ");
        printf("***********************
    ");
        scanf("%d",&n);    
        starttime=reachtime[1];
        if(n==1)
        {              
            printf("You want to run fcfs:
    ");
            printf("作业编号	开始时间	运行时间	完成时间	周转时间	带权周转时间
    ");
            for(j=1;j<=i;j++)
            {
                finishtime=starttime+runtime[j];
                rotatetime=starttime+runtime[j]-reachtime[j];
                printf("%d	%d		%d		%d		%d		%f
    ",j,starttime,runtime[j],finishtime,rotatetime,(float)(starttime+runtime[j]-reachtime[j])/runtime[j]);
                a+=rotatetime;
                b+=(starttime+runtime[j]-reachtime[j])/runtime[j];
                starttime=starttime+runtime[j];
                if(starttime<reachtime[j+1]) 
                    starttime=reachtime[j+1];
            }
            printf("平均周转时间为:%f
    ",a/i);
                    printf("平均带权周转时间为:%f
    ",b/i);
    
        }
        if(n==2)
        {             
            printf("You want to run sjf
    ");
            printf("作业编号	开始时间	运行时间	完成时间	周转时间	带权周转时间
    ");
            starttime=reachtime[1];
            for(j=1;j<=i;j++)
            {
                            finishtime=starttime+runtime[j];
                rotatetime=starttime+runtime[j]-reachtime[j];
                printf("%d	%d		%d		%d		%d		%f
    ",j,starttime,runtime[j],finishtime,rotatetime,(float)(starttime+runtime[j]-reachtime[j])/runtime[j]);
                a+=rotatetime;
                b+=(starttime+runtime[j]-reachtime[j])/runtime[j];
                for(k=j;k<=i;k++)
                {
                    if(starttime+runtime[j]>reachtime[k+1])
                        max=k;
    
                }
                for(l=j;l<max;l++) 
                {
                    for (m=0;m<max-l;m++) 
                    {
                        if (runtime[m]>runtime[m+1]) 
                        {
                            temp=runtime[m];    
                            runtime[m]=runtime[m+1]; 
                            runtime[m+1]=temp;
                            temp=reachtime[m];                    
                            reachtime[m]=reachtime[m+1]; 
                            reachtime[m+1]=temp;
                        }   
                    }
                }
                starttime=starttime+runtime[j];    
                if(starttime<reachtime[j+1]) 
                    starttime=reachtime[j+1];            
            }
                printf("平均周转时间为:%f",a/i);
                printf("平均带权周转时间为:%f",b/i); 
        }
    
        
    }

  • 相关阅读:
    CI平台
    【转】深藏不露,处世之道
    编写vscode插件
    css背景图宽度只适应,高度不变
    vue实现pc端无限加载功能
    box-shadow比较美观的阴影
    Nuxt.js项目实战
    vue图片放大镜效果
    vue分页组件
    为什么计算机中的小数位无法精确
  • 原文地址:https://www.cnblogs.com/zhushengjie/p/4486676.html
Copyright © 2011-2022 走看看