最高响应比

#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(" ");

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

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

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

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

  printf(" ");  

 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("进程号 完成时间 周转时间 带权周转时间 ");

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

 printf("%d %d %d %.2f ",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("平均周转时间 平均带权周转时间 ");

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

}

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