【发布时间】:2012-02-01 15:08:37
【问题描述】:
所以,这就是我要实现的逻辑:
date120 = date5;
date90 = min(date90,date120);
date60 = min(date60, date90, date120);
date30 = min(date30,date60,date90,date120);
min 函数找到最小的正整数。
这就是我循环它的方式:
if(strStatus != "5" && date5 >= 0)
{
date120 = date5;
COUT<<"date30 is "<<date30<<" and date60 is "<<date60<<" and date120 is "<<date5<<" and date90 is "<<date90<<ENDL;
if((date120 < date90) && (date120 >= 0))
{
date90 = date120;
COUT<<"and date90 is "<<date90<<ENDL;
if((date90 < date60) && (date90 >= 0))
{
date60 = date90;
COUT<<"and date60 is "<<date60<<ENDL;
if((date60 < date30) && (date60 >= 0))
{
date30 = date60;
COUT<<"and date30 is "<<date30<<ENDL;
}
}
if((date60 < date30) && (date60 >= 0))
date30 = date60;
}
if((date90 < date60) && (date90 >= 0))
{
date60 = date90;
COUT<<"and date60 is "<<date60<<ENDL;
if((date60 < date30) && (date60 >= 0))
date30 = date60;
}
if((date60 < date30) && (date60 >= 0))
{
date30 = date60;
COUT<<"and date30 is "<<date30<<ENDL;
}
COUT<<"Because there was a 5 and date30 is "<<date30<<" and date60 is "<<date60<<ENDL;
}
日志中的输出如下所示:
date30 is -1 and date60 is -1 and date120 is 15 and date90 is -1
Because there was a 5 and date30 is -1 and date60 is -1
我的逻辑有问题吗?我错过了一些逻辑明智的东西吗?有没有更简单的方法来做到这一点?
【问题讨论】:
-
您的代码中没有“其他”情况,您确定控制流程正确吗?这段代码真的很难分析,因为有很多分支,而且你的数据如何在它们之间流动并不明显。我会说你应该重构代码;你有一个很好的方式来描述它应该如何工作,所以只需逐字翻译它:定义一个“positiveMin”函数并从那里继续。
-
什么是
COUT和ENDL?你的意思是std::cout和std::endl? -
是的,它们是相同的 std::cout 和 std::endl