用于日期函数定义的伪代码

时间:2013-10-06 23:21:56

标签: c++ c++11

我收到的伪代码:

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; 
}

这看起来不错吗?我正在根据Stroustrup的书做一个新的任务。只需要一些验证

1 个答案:

答案 0 :(得分: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不是dec而d不是29,所以不会发生任何操作。

    else{ 
        m=m+1; 
    } 

等待! m递增。

    d=d+1;

d也是如此。

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

再看看伪代码 - 首先发生的事情就是增加一天。如果is_date为false,则其他所有内容。但是is_date不应该被解释为某个静态值,而应该实现为检查日期是否有效(例如我们在增量后的第32天)。 仅当新日期无效时,月份和/或年份才会增加。