0

我收到的伪代码:

Date& operator++(){
    //add 1 to d  //tomorrow, unless we were at the end of the month
    //if is_date is false
    //            //need to change to first of next month
    //  set d to 1
    //  if m is December
    //            //need to change to next year too      
    //    set m to January
    //    increment y
    //  else
    //    increment m
    return *this;

}

我的解释:

Date& Date::operator++(){ 
    if (is_date==false){ 
        m=m+1; 
        d=1; 
    } 
    if (m==dec && d==29){ 
        m=jan; 
        y=y+1; 
    } 
    else{ 
        m=m+1; 
    } 
    d=d+1; 
}

这看起来好吗?我正在根据 Stroustrups 书进行硬件作业。只需要一些验证

4

1 回答 1

1

让我们增加2010-03-10

    if (is_date==false){ 
        m=m+1; 
        d=1; 
    } 

我们假设is_date是真的,所以没有动作发生。

    if (m==dec && d==29){ 
        m=jan; 
        y=y+1; 
    } 

m不是 decd也不是 29,因此不会发生任何操作。

    else{ 
        m=m+1; 
    } 

等待!m递增。

    d=d+1;

也是如此d

我们2010-04-11现在拥有——不是我们想要的。

再看一下伪代码——发生的第一件事就是增加一天。只有当 is_date 为假时才会发生其他所有事情。但是 is_date 不应该被解释为一些静态值,而应该被实现为检查日期是否有效(例如,我们有递增后的 32 天)。仅当新日期无效时,月份和/或年份才会递增。

于 2013-10-06T23:40:49.360 回答