博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
轮转调度算法
阅读量:6111 次
发布时间:2019-06-21

本文共 1912 字,大约阅读时间需要 6 分钟。

#include<stdio.h>

#include<stdlib.h>

#define N 100

typedef struct process {

 int num;

 int time;

 int start;

 int end;

 int begin;  

int freetime;  

int arrivetime;

 int finish;

 int turn;

 double reaction;

 double average;

}

P;

P a[N],b;

int wordtime=0;

int decide(n)

{  

int i,t=0;

 for(i=0;i<n;i++)

 {   

if(a[i].end==1)  

 {    

t=1;  

  }  

 else

  {  

  t=0; 

   break;

 }  

}

if(t==0)   return 0;

else  return 1;

}

void rr(int i,int j,int n,int x)

{  while(decide(n)==0)

 {    

 //j=1;   

for(i=0;i<n;i++)   {

   if(a[i].end==1)    {   

      }  

  else

if(a[i].end==0)    {

    if(a[i].arrivetime<=wordtime)   

  {  

          if(a[i].freetime>0)     

 {       

a[i].freetime--;   

    wordtime++;    

  }    

   if(a[i].freetime==0)   

   {       

a[i].end=1;      

 a[i].finish=wordtime;      

       }          

 }   

  else {  

     for(j=i;j<n;j++)       {   

 if(a[j].arrivetime<=wordtime&&a[j].end==0)  

      {

  x=0;  

       i=j-1;  

       break;   

     }      

  else if(j==i-1)  

      {  

      x=1;    

 break;    

    }    

    else     

          x=1;   

                if(j==n-1&&i!=0)     

           j=-1;     

  }     if(x==1)

    wordtime++;      

        }  

  }

 }

    }

}

void main() {

 int n=5,i,t,sum=0,num=2,j,x=1;  

double average=0,turn=0;

  printf("请输入进程个数:");

  scanf("%d",&n);  

 for(i=0;i<n;i++){

  printf("\n");  

 printf("请输入第%d个进程到达时间:",i+1);

  scanf("%d",&a[i].arrivetime);

  printf("请输入第%d个进程需要时间:",i+1);

  scanf("%d",&a[i].time);

  printf("\n");  

 a[i].start=a[i].arrivetime;  

 a[i].freetime=a[i].time;

//剩余时间赋值  

 a[i].num=i+1;

  a[i].start=a[i].end=0;

 }//输入数据  

 for(i=0;i<n;i++)  {  

 for(t=i+1;t<n;t++)   {

   if(a[t].arrivetime<a[i].arrivetime)    {

    b=a[i];    

 a[i]=a[t];    

 a[t]=b;  

  }  

  else if(a[t].arrivetime==a[i].arrivetime)

   {    

 if(a[i].time>a[t].time)    

 {    

  b=a[i];  

    a[i]=a[t];   

   a[t]=b;     

}   

 }

  }

 }//排序

 rr(i,j,n,x);

 for(i=0;i<n;i++)

 {  

 a[i].turn=a[i].finish-a[i].arrivetime;   

a[i].average=(float)a[i].turn/a[i].time;

 }

   printf("进程号\t完成时间\t周转时间\t带权周转时间\n");

 for(i=0;i<n;i++)  

 printf("%d\t%d\t\t%d\t\t%.2f\n",a[i].num,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("平均周转时间\t平均带权周转时间\n");

 printf("%.2f\t\t%.2f\n",turn,average);

转载于:https://www.cnblogs.com/dachui/p/5598560.html

你可能感兴趣的文章
web框架-(二)Django基础
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
Excel到R中的日期转换
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>