| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2073 人关注过本帖
标题:这个时间比较函数有错误么?
只看楼主 加入收藏
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
 问题点数:0 回复次数:17 
这个时间比较函数有错误么?
struct TIME
{
    int h;
    int m; //h代表小时,m代表分钟
};

//IF语句不知道有没有用错
bool CompareTime (struct TIME time1,struct TIME time2)   //定义时间比较函数   如果time1<time2,返回ture
             {
              if(time1.h<time2.h)
                 return true;
              else if(time1.h=time2.h)
                  {if(time1.m<=time2.m)
                    return true;
                   else return false;
                   }
              else return false;
             }
搜索更多相关主题的帖子: 函数 时间 
2008-06-23 20:14
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
得分:0 
回复 2# かわい 的帖子
帮我看看程序好不好啊 ..
快死人了...

2008-06-23 20:26
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
得分:0 
#include<iostream.h>
#include<stdio.h>
using namespace std;

struct TIME
{
    int h;
    int m; //h代表小时,m代表分钟
};
struct JOB        //建类JOB
{
   TIME R,RU,F,E;   //到达时间,开始运行时间,完成时间 ; 估计运行时间
   float zt;       //周转时间
   float dzt;      //带权周转时间
   int number;
   float r; //响应比
};
bool CompareTime (struct TIME time1,struct TIME time2)   //定义时间比较函数   如果time1<time2,返回ture
             {
              if(time1.h<time2.h)
                 return true;
              if(time1.h=time2.h)
                  {if(time1.m<=time2.m)
                    return true;
                   else return false;
                   }
              else return false;
             }
TIME AddTime (TIME time1,TIME time2)     //定义时间的加法
             {

               time1.m=time1.m+time2.m;
               time1.h=time1.h+time2.h;
              if(time1.m>=60)
              {do
                {
                  time1.h+=1;
                  time1.m-=60;
                 }while(time1.m>=60);
              }
              return time1;
             }
int SubTime (struct TIME time1,struct TIME time2) //定义时间的减法
         {
          return((time1.h-time2.h)*60+(time1.m-time2.m));
         }

 void out1(JOB job[],int n)   //定义输出函数out1
{
int i;
cout<<"你的输入如下:\n\n";
cout<< "作业名称     到达时间(hh:mm)       估计运行时间(M)"<<"\n\n";
for(i=1;i<=n;i++)
    {
     cout<<"JOB"<<job[i].number;
     printf("             %-d:%-d\t                %-d\t ",job[i].R.h,job[i].R.m,job[i].E.m);
     putchar('\n');}
}

void out2(struct JOB job[],int n)    //定义输出函数out2
{
int i;
cout<<"下面为结果:\n\n";
cout<< "顺序    reach time   estimate    run time   finish time    周转时间 带权周转时间\n";
for(i=1;i<=n;i++)
    {
    cout<<"JOB"<<job[i].number;
    printf("      %-d:%-d\t      %d       %-d:%-d\t      %-d:%-d\t     %-.1f\t %-.3f\t\n",job[i].R.h,job[i].R.m,job[i].E.m,job[i].RU.h,job[i].RU.m,job[i].F.h,job[i].F.m,job[i].zt,job[i].dzt);
    }
putchar('\n');
}

int main(void)
{
int num;//作业个数
int N;
int i,j;
int c=0;//用于SJF算法中,就绪状态作业的计数
int k;
struct JOB job[7];
cout<<"请选择调度算法:1.FIFO  2.JSF  3.HRN\n";
cin>>N;
cout<<"请输入作业个数:";
cin>>num;
cout<<"请按提示分别输入个作业到达时间,以及估计运行时间\n\n";
for(int i=1;i<=num;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].E.m;
      job[i].E.h=0;
      job[i].number=i;
      job[i].r=0;
    }
    putchar('\n');
out1(job,num);//输出用户输入数据
for(i=1;i<num;i++)    //按时间排序
  { for(j=i+1;j<=num;j++)
        if(CompareTime(job[j].R,job[i].R))
                 {
                  job[0]=job[j];
                  job[j]=job[i];
                  job[i]=job[0];
                  }
   }


    job[1].F=AddTime(job[1].R,job[1].E);
          job[1].RU=job[1].R;
          job[1].zt=job[1].E.m;
          job[1].dzt=job[1].zt/job[1].E.m;

switch(N)

  {
   case 1:     //FIFO
       for(i=2;i<=num;i++)
       {
        {if(CompareTime(job[i-1].F,job[i].R))  //到达时间在前个作业的完成时间之前
             job[i].RU=job[i].R;
         else job[i].RU=job[i-1].F;
         }
             job[i].F=AddTime(job[i].RU,job[i].E);
             job[i].zt=SubTime(job[i].F,job[i].R);
             job[i].dzt=job[i].zt/job[i].E.m;
       }
        break;
  
   ......
  }
out2(job,num);   //调用输出函数
return 1;
}
当作业超过3个时有时结果对有时错...郁闷,我估计是在“排序”或者“时间比较”这里出错,就是找不出来。快找一天了...

[[it] 本帖最后由 linsq 于 2008-6-23 20:33 编辑 [/it]]

2008-06-23 20:29
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
得分:0 
回复 5# かわい 的帖子
改了,结果还是出错

2008-06-23 20:34
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
继续改..

樱花大战,  有爱.
2008-06-23 20:35
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
LZ要知道,调试这东西是很费时和神的..

樱花大战,  有爱.
2008-06-23 20:37
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
得分:0 
回复 8# かわい 的帖子
改了IF语句

2008-06-23 20:38
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
得分:0 
回复 9# 中学者 的帖子
唉,时间和精力...

2008-06-23 20:39
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
得分:0 
[bo][un]かわい[/un] 在 2008-6-23 20:40 的发言:[/bo]

你到底改了什么


 

把你刚才跟我讲的那个IF语句中 if else 改成 if 啊

2008-06-23 20:46
wltysy
Rank: 1
等 级:新手上路
帖 子:560
专家分:0
注 册:2008-5-2
收藏
得分:0 
我晕,2楼都说了,if(time1.h=time2.h)
2008-06-23 20:48
快速回复:这个时间比较函数有错误么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017660 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved