论坛徽章: 0
1 可用积分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct jcb
{
char name[10];
int te;
int ntime;
int time;
int tb;
int ti;
int tc;
float eti;
float ewi;
};
typedef struct
{
struct jcb stu[10];
int head;
int rear;
}SeqQueue;
struct jcb stu[3]={{"Job1:",600,120,0,0,0,0,0.0,0.0},{"Job2:",610,60,0,0,0,0,0.0,0.0},{"Job3:",640,20,0,0,0,0,0.0,0.0}};
void InitQueue(SeqQueue *Q)
{ char *head;
Q->head=Q->rear=0;
}
int EnterQueue(SeqQueue *Q, struct jcb x)
{
if((Q->rear+1)%10==Q->head)
return 0;
Q->stu[Q->rear]=x;
Q->rear=(Q->rear+1)%10;
return 1;
}
int DeleteQueue(SeqQueue *Q, char * x)
{
if(Q->head==Q->rear)
return(0);
*x=Q->stu[Q->head];
Q->head=(Q->head+1)%10;
return 1;
}
void fcfs()
{
int i,j;
float wi,ti;
struct jcb x;
SeqQueue Q;
InitQueue(Q);
for(i=0;i<3;i++)
{
x.name=stu.name;
x.te=stu.te;
x.ntime=stu.ntime;
x.tb=stu.tb;
x.tc=stu.tc;
x.ti=stu.ti;
x.eti=stu.eti;
x.ewi=stu.ewi;
EnterQueue(Q,x);
}
for (i=0;i<10;i++)
{
struct jcb *p=head
;
p->tb=time;
p->tc=p->tb+p->ntime;
p->ti=(float)(p->tc-p->tb);
p->wi=(float)(p->ti/p->ntime);
eti+=p->ti;
ewi+=p->wi;
printf("time=%d",&time\n);
time+=p->ntime;
eti/=3;
ewi/=3;
printf("eti=%f",&eti) ;
printf("ewi=%f",&ewi);
DeleteQueue();
}
}
void sjf()
{int lab;
int min=a[0];
for(i=0;i<10;i++)
{
if(a<min) {min=a;lab=i;}
}
struct jcb a[10];
int lab;
int min=a[0].time;
for(i=0;i<10;i++)
{
if(a.time<min) {min=a.time;lab=i;}
struct jcb *p=min;
p->tb=time;
p->tc=p->tb+p->ntime;
p->ti=(float)(p->tc-p->tb);
p->wi=(float)(p->ti/p->ntime);
eti+=p->ti;
ewi+=p->wi;
printf("time=%d",&time\n);
time+=p->ntime;
eti/=3;
ewi/=3;
printf("eti=%f",&eti) ;
printf("ewi=%f",&ewi);
}
}
float super(struct jcb stu)
{ int i;
for(i=0;i<10;i++)
{ *p=stu;}
float super;
super+/3=1+(stu.tc-stu.te)/stu.ntime;
return super;
}
}
void hrn(struct jcb s[10])
{
float sup[10];
for(i=0;i<10;i++)
{
sup=super(s);
}
int lab;
float max=sup[0];
for(i=0;i<10;i++)
{
if(sup>max) {max=sup;lab=i;}
struct jcb *p=stu[0];
p->tb=time;
p->tc=p->tb+p->ntime;
p->ti=(float)(p->tc-p->ts);
p->wi=(float)(p->ti/p->ntime);
eti+=p->ti;
ewi+=p->wi;
printf("time=%d",&time\n);
time+=p->ntime;
eti/=3;
ewi/=3;
printf("eti=%f",&eti) ;
printf("ewi=%f",&ewi);
}
}
void main()
{ struct jcb *p=stu[ ];
switch()
{
case1:fcfs();break;
case2:sjf();break;
case3:hrn();break;
}
}
我来回答