单道作业调度FIFO算法
大哥,救命啊,为什么重载一直都出错,还有,是不是结构体里面不能包含类?能否帮小弟看下,感激不尽:#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string>
using namespace std;
class TIME
{
public:
int h;
int m; //到达时间 h代表小时,m代表分钟
bool operator > (TIME time1,TIME time2);
TIME operator + (TIME time1,TIME time2);
TIME operator + (TIME time1,int e);
int operator - (TIME time1,TIME time2);
};
bool TIME::operator >(JOB.TIME time1,JOB.TIME time2) //重载“>”
{
if(time1.h>=time2.h)
if(time1.h=time2.h)
if(time1.m>=time2.m) return 1;
else return 0;
else return 1;
else return 0;
}
TIME TIME::operator +(TIME time1,&int e)
{
time1.m=time1.m+e;
if(time1.m>=60)
{
time1.h+=1;
time2.h-=60;
}
return time1;
}
TIME TIME::operator +(&JOB.TIME time1,&JOB.TIME time2) //重载“+”
{
time1.m=time1.m+time2.m;
time1.h= time1.h+time2.h;
if(time1.m>=60)
{
time1.h+=1;
time2.h-=60;
}
return time1;
}
int TIME:: operator -(&TIME time1,&TIME time2)
{
return((time1.h-time2.h)*60+(time1.m-time2.m));
}
struct JOB //建类JOB
{
string name;
int etime; //估计运行时间
TIME R,RU,F; //到达时间,开始运行时间,完成时间
float zt; //周转时间
float dzt; //带权周转时间
};
void main()
{
int num;//作业个数
int N;
cout<<"请选择调度算法:1.FIFO 2.SJF 3.HRN\n";
cin>>N;
cout<<"请输入作业个数:";
cin>>num;
JOB job[num+1];
cout<<"请按提示分别输入个作业的名称,到达时间,以及估计运行时间\n\n";
for(int i=1;i<=num+1;i++)
{
cout<<"请输入第"<<i<<"个作业的名称:(按回车键将自动生成 job【N】格式)\n";
cin>>job[i].name;
if(job[i].name=="\n")
job[i].name="job"+char(i);
do
{
cout<<"请输入第"<<i<<"个作业的到达时间(先小时,后分钟):\n";
cin>>job[i].R.h;
cin>>job[i].R.m;
} while(job[i].R.h<0&&job[i].R.h>=23&&job[i].R.m>=60&&job[i].R.m<0); //
cout<<"请输入第"<<i<<"个作业的估计运行时间(Min)\n";
cin>>job[i].etime;
}
putchar('\n');
void out1(JOB[num]);//输出用户输入数据
switch(N)
case 1: //FIFO
for(i=1;i<=num;i++)
{ for(int j=i+1;j<=n,j++)
if(!job[i].R>job[j].R)
{
job1[0]=job[i];
job[i]=job[j];
job[j]=job[0];
}
}
job[1].F=job[1].R+job[1].etime;
job[1].RU=job[1].R;
job[1].zt=job[1].F-job[1].R;
job[1].dzt=job[1].zt/job[1].etime;
for(i=2;i<=num;i++)
{
if(job[i].R>job[i-1].F)
job[i].RU=job[i].R;
else
job[i].RU=job[i-1].F;
job[i].F=job[i]+job[i].etime;
job[i].zt=job[i].F-job[i].R;
job[i].dzt=job[i].zt/job[i].etime;
}
break;
case 2:// SJF
break;
case 3://HRN
break;
void out2(JOB[num]); //调用输出函数
}
//两个输出函数的定义
void out1(&JOB[num])
{cout<<"你的输入如下:\n\n"
cout<< "作业名称" "到达时间" "估计运行时间(M)";
for(i=1;i<=num;i++)
cout<<job[i].name<<" "<<job[i].TIME.h<<":"<<job[i].TIME.m<<" "<<job[i].etime;
putchar('\n')
}
void out2(&JOB[num])
{
cout<<"下面为结果:\n\n";
cout<< "作业名称 到达时间(hh:mm) 估计运行时间(m) 开始运行时间 结束时间 周转时间 带权周转时间\n";
for(i=1;i<=num;i++)
cout<<job[i].name<<" "<<job[i].TIME.h<<":"<<job[i].TIME.m<<" "<<job[i].etime<<" "<<job[i].RU<<" "<<job[i].F<<" "<<job[i].zt<<" "<<job[i].dzt;
putchar('\n')
}