• fcfs


    #include<stdio.h>
    #include<stdlib.h>
    #define N 100


    typedef struct process
    {
     int time;  //需要时间
        char name;
     int end;
     
     int freetime;   //剩余剩余时间
     int arrivetime;   //到达时间
     int finish;        //完成时间
     int turn;          //周转时间
     double average;    //平均带权周转时间
    }P;

    P a[N],b;
    int wordtime=0;

    void fcfs(int i,int t,int n)
    {
     a[0].finish=a[0].arrivetime+a[0].freetime;//给予a[0]初值
     wordtime=a[0].finish;
        a[0].turn=a[0].time;
     a[0].average=(float)a[0].turn/a[0].time;
     for(i=1;i<n;i++)//执行
     {
      if(a[i].arrivetime<a[i-1].finish)
      {
       a[i].finish=a[i-1].finish+a[i].freetime;
       a[i].turn=a[i].finish-a[i].arrivetime;
      }
      else
      {
       a[i].finish=a[i].arrivetime+a[i].freetime;
       a[i].turn=a[i].time;
      }
      
      a[i].average=(float)a[i].turn/a[i].time;
      wordtime=a[i].finish;
     }
     
    }

    void main()
    {
     int i,j,n,sum=0;
     double average=0,turn=0;       
     printf("请输入进程个数: ");
     scanf("%d",&n);
     getchar();
     for(i=0;i<n;i++)
     {
     
      printf("第%d个进程到达时间:",i+1);
      scanf("%d",&a[i].arrivetime);
      printf("第%d个的需要时间 :",i+1);
      scanf("%d",&a[i].time);
      printf(" ");

      a[i].freetime=a[i].time;//剩余时间赋值
     
     
     }//输入数据
     
     for(i=0;i<n;i++)
     {
      for(j=i+1;j<n;j++)
      {
       if(a[j].arrivetime<a[i].arrivetime)
       {
        b=a[i];
        a[i]=a[j];
        a[j]=b;
       }
       else if(a[j].arrivetime==a[i].arrivetime)
       {
        if(a[i].time>a[j].time)
        {
         b=a[i];
         a[i]=a[j];
         a[j]=b;
        }
       }
      }
     }//排序
     fcfs(i,j,n);
     
     printf("完成时间 周转时间 带权周转 ");
     for(i=0;i<n;i++)
      printf("%d %d %.2f ",a[i].finish,a[i].turn,a[i].average);
     
        for(i=0;i<n;i++)
     {
      turn=turn+(float)a[i].turn;
      average=average+(float)a[i].turn/a[i].time;
     }
     turn=turn/n;
     average=average/n;
     printf("平均周转     平均带权周转 ");
        printf("%.2f %.2f ",turn,average);
     
    }

  • 相关阅读:
    最小的K个数
    数组中出现次数超过一半的数字
    合并排序
    一只小蜜蜂...
    从零开始学springboot笔记(三)-Spring boot之热部署之Springloaded(仅做了解,实际开发中不用它)
    从零开始学springboot笔记(二)-Spring boot返回json数据(中文无乱码)
    从零开始学springboot笔记(一)-Spring boot之Hello Word
    IDEA2018永久破解版下载与安装
    $.ajaxSettings.async = false;是什么意思?
    嘿嘿
  • 原文地址:https://www.cnblogs.com/guo2016/p/5583551.html
Copyright © 2020-2023  润新知