| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:悲剧了 求改错.......
只看楼主 加入收藏
爵爷
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
悲剧了 求改错.......
程序代码:
/*******************************************************************************************
2.    自定义一个简单的日期类DateType,它具有数据成员y、m、d,用来表示当前日期的年、月、日。
而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。
例如,下面给出的"雏形"可用来实现对天的增加,比较两个日期是否相等,以及对日期的输出等操作。
请完成各类成员函数,并编制主函数,说明DateType类对象,对定义的各成员函数进行调用,
以验证它们的正确性。
class DateType {                        //自定义的日期类DateType
    int y,m,d;                      //数据成员,表示当前日期的年、月、日
public:
    DateType(int y0=1, int m0=1, int d0=1); 
                //构造函数,设定年、月、日;并设置参数默认值
    void incrementDay();              //增加1天
       bool equal(DateType dt2);              //判断二日期是否相等 
    void printDate();                  //屏幕输出日期对象的有关数据(年、月、日)
};
注意,当对日期增加1天后,也会涉及所谓的"进位"问题:首先算出本"日"所在的月份具有的天数N,
若加1之后的"日"数值超过所在的月份具有的天数N时,"进位"到月,而月份若超过12时还要"进位"到年。
***********************************************************************************************/
#include<iostream>
using namespace std;
class DateType 
{                        
    int y;
    int    m;
    int d;                      //数据成员,表示当前日期的年、月、日
  public:    
    DateType(int y0=1, int m0=1, int d0=1); 
                //构造函数,设定年、月、日;并设置参数默认值
    void incrementDay();              //增加1天
       bool equal(DateType dt2);              //判断二日期是否相等 
    void printDate();                  //屏幕输出日期对象的有关数据(年、月、日)
};
DateType::DateType(int y0, int m0, int d0)
{
    y=y0;
    m=m0;
    d=d0;
}
void DateType::incrementDay()
  { 
     int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
     if((y%4==0&&y%100!=0)||(y%400==0))
         a[1]++;
      if(d==a[m-1]&&m==12)
      {
         y++;
         m=1;
         d=1;
      }
        else if(d==a[m-1]&&m!=12)
     
        {
            m++;
            d=1;
        }
     
             else
                d++;
  }
void DateType::printDate()
    {
     cout<<"日期是"<<y<<"年"<<m<<"月"<<d<<"日"<<endl;
    }
bool DateType::equal(DateType dt2)
{  DateType dt;
   if(dt.y==dt2.y||dt.m==dt2.m||dt.d==dt2.d)
   return true;
   else
   return false;
}
  void main()
  {
    DateType dt1(1999,2,28),dt2(1999,2,28);
    cout<<"dt1"; dt1.printDate();
    cout<<"dt2"; dt2.printDate();
    if(dt1.equal(dt2))
        cout<<"两日期相等"<<endl;
    else
        cout<<"两日期不相等"<<endl;
    dt2.incrementDay();
    cout<<"dt2.incrementDay():dt2";
    dt2.printDate();

  }

图片附件: 游客没有浏览图片的权限,请 登录注册

为什么两日期不相等啊?晕......


























[ 本帖最后由 爵爷 于 2009-11-19 17:20 编辑 ]
搜索更多相关主题的帖子: 改错 
2009-11-19 17:08
爵爷
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-18
收藏
得分:0 
貌似是吃饭时间 汗了= =等待中......
2009-11-19 17:21
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:20 
程序代码:
bool DateType::equal(DateType dt2)
{  DateType dt;
   if(dt.y==dt2.y||dt.m==dt2.m||dt.d==dt2.d)
   return true;
   else
   return false;
}
程序代码:
修改为:

bool DateType::equal(DateType dt2)
{
   if(y==dt2.y||m==dt2.m||d==dt2.d)
   return true;
   else
   return false;
}


你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-11-19 17:25
爵爷
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-18
收藏
得分:0 
汗 原来如此 谢谢楼上了
3Q
2009-11-19 17:28
快速回复:悲剧了 求改错.......
数据加载中...
 
   



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

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