码迷,mamicode.com
首页 > 其他好文 > 详细

最高响应比

时间:2016-06-16 23:10:43      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

#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;

void hrrn(int i,int j,int t,int n){

 a[0].finish=a[0].arrivetime+a[0].freetime;

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++)  {

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

   if(a[j].arrivetime<=a[i-1].finish)    {

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

       a[t].reaction=(float)(a[t-1].finish-a[t].arrivetime+a[t].time)/a[t].time;

     if(a[t].reaction<a[j].reaction)      {

      b=a[j];

      a[j]=a[t];  

     a[t]=b;   

   }  

   }

   }  

 }    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 n=5,i,t,sum=0,num=2,j,x;

 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;  

   }  

  }

  }

 }

  hrrn(i,j,t,n);

 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);  

}

最高响应比

标签:

原文地址:http://www.cnblogs.com/dachui/p/5592287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!