当前位置: 代码迷 >> C语言 >> 单道作业调度FIFO算法
  详细解决方案

单道作业调度FIFO算法

热度:734   发布时间:2008-06-02 22:53:47.0
单道作业调度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')
}
搜索更多相关的解决方案: FIFO  算法  作业  

----------------解决方案--------------------------------------------------------
你的重载函数错的严重。。。。。成员函数方式不能这样重载的


[color=white]
----------------解决方案--------------------------------------------------------