首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >允许嵌套逻辑&&运算符吗?

允许嵌套逻辑&&运算符吗?
EN

Stack Overflow用户
提问于 2011-06-05 04:43:08
回答 1查看 232关注 0票数 0

我已经写了一个在Octave中使用的.oct函数,它没有给出我期望的结果,我认为问题可能出在下面给出的代码片段上-像我已经做的那样嵌套逻辑&&运算符,还是需要使用更多的内部if循环将其分离出来?

代码语言:javascript
运行
复制
 if ((( final_side_PDF > final_uwr_PDF && final_side_PDF > final_unr_PDF ) && final_side_PDF > final_dwr_PDF ) && final_side_PDF > final_dnr_PDF)
    {
    market_model(ii) = 0.0;
    }
 else if ((( final_uwr_PDF > final_side_PDF && final_uwr_PDF > final_unr_PDF ) && final_uwr_PDF > final_dwr_PDF ) && final_uwr_PDF > final_dnr_PDF )
    {
    market_model(ii) = 1.0;
    }
 else if ((( final_unr_PDF > final_side_PDF && final_unr_PDF > final_uwr_PDF ) && final_unr_PDF > final_dwr_PDF ) && final_unr_PDF > final_dnr_PDF)
    {
    market_model(ii) = 2.0;
    }
 else if ((( final_dwr_PDF > final_side_PDF && final_dwr_PDF > final_uwr_PDF ) && final_dwr_PDF > final_unr_PDF ) && final_dwr_PDF > final_dnr_PDF)
    {
    market_model(ii) = -1.0;
    }
 else if ((( final_dnr_PDF > final_side_PDF && final_dnr_PDF > final_uwr_PDF ) && final_dnr_PDF > final_unr_PDF ) && final_dnr_PDF > final_dwr_PDF)
    {
    market_model(ii) = -2.0;
    }
 else
    {
    market_model(ii) = market_model(ii-1);
    }

根据评论进行编辑

我希望检查五个变量中的哪一个;final_side_PDF、final_uwr_PDF、final_unr_PDF、final_dwr_PDF和final_dnr_PDF;具有最大值,并根据哪个变量是最大值返回唯一的标识号: 0,1,2,-1,-2。上面的代码包含在一个主(ii)循环中。

EN

回答 1

Stack Overflow用户

发布于 2011-06-05 04:59:25

建议:

代码语言:javascript
运行
复制
 typedef int final_t;

 // From your code I assume that "final_xx" can have the same values, otherwise a std::map would be simpler. 
 std::multimap<final_t, double> finals;

 finals.insert(std::make_pair(final_side_PDF, 0.0));
 finals.insert(std::make_pair(final_uwr_PDF,  1.0));
 finals.insert(std::make_pair(final_unr_PDF,  2.0));
 finals.insert(std::make_pair(final_dwr_PDF, -1.0));
 finals.insert(std::make_pair(final_dnr_PDF, -2.0));

 auto max_final = finals.rbegin();

 if(finals.count(max_final->first) == 1)
    masket_model(ii) = max_final->second;
 else
    market_model(ii) = market_model(ii-1);

如果"final_xx“都有唯一的值,你可以让它变得更简单:

代码语言:javascript
运行
复制
 typedef int final_t;

 std::map<final_t, double> finals;

 finals[final_side_PDF] =  0.0;
 finals[final_uwr_PDF]  =  1.0;
 finals[final_unr_PDF]  =  2.0;
 finals[final_dwr_PDF]  = -1.0;
 finals[final_dnr_PDF]  = -2.0;

 auto max_final = finals.rbegin();

 market_model(ii) = max_final->second;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6239278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档