我收到的伪代码:
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的书做一个新的任务。只需要一些验证
答案 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天)。 仅当新日期无效时,月份和/或年份才会增加。