[问题] c++请问是否有else if 判断条件简化方式

楼主: sa12e3   2018-08-26 21:43:00
开发平台(Platform): (Ex: Win10, Linux, ...) Android app模拟c++
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)c++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
各位 前辈:您们好。
因为是c++新手,还请帮忙指导以下的问题,
因为还不太熟悉,恳请帮忙提供简单明了的简单方式解惑,先谢谢 各位了。
感恩。
else if(c*2-1 == a && c+1 <= b )
{ cout << "*"; }
else if(c*2-1 == b && c+1 <= a )
{ cout << "*";}
else if(c*2-2 == a && c+2 <= b )
{ cout << "*";}
else if(c*2-2 == b && c+2 <= a )
{ cout << "*";}
这一串程式码是在两个for回圈内。
/*需要将以上程式码取代成以下程式码。*/
e若是int设定为 数字1或c-2等。
然后在上述的两个for其中一个放入
e++或e
作者: commandoEX (卡曼都)   2018-08-26 22:17:00
你可以让e设成阵列变成e[i]就能在循环中有很多个e啦
作者: stupid0319 (征女友)   2018-08-26 22:32:00
完全看不懂原PO想要表达的内容,看来我还是太浅了
作者: MOONRAKER (㊣牛鹤鳗毛人)   2018-08-26 22:42:00
看不懂+1 非常深奥
作者: jerryh001   2018-08-27 00:55:00
我觉得你最好列出完整code或是完整问题
作者: CoNsTaR ((const *))   2018-08-27 04:17:00
Linear types?确保变量只能被使用一遍?
作者: s4300026 (s4300026)   2018-08-27 08:32:00
if(e==1戌e==c-2){则使用修改后的方法}听起来就是原po有两种输入情境(e=1和e=c-2),但他目前只写了一种判断方法(e=1),然后他想要一种判断方法可以一次判断两种情境(即他所述的新方法),但他不知道要怎么过滤掉除了上述两种情境的方法进入判断式以上为水晶球脑补的结果
作者: sarafciel (Cattuz)   2018-08-27 08:53:00
I think you can describe your problem in English.
楼主: sa12e3   2018-08-27 10:51:00
谢谢各位,但发现若要使用阵列 c*2及a,b等数值貌似要一同转换成阵列才可运行? s4300026大大的解说是正确的,就是希望能有此效果,谢谢 您的细部说明。
作者: Killercat (杀人猫™)   2018-08-27 20:46:00
你这问题其实就是COR(Chain of Responbility)最常解决的问题,不过由于你的statement过短,写成COR就太搞刚
楼主: sa12e3   2018-08-28 09:43:00
不好意思,是否可请 前辈提供cor简单的范例? 谢谢 您。另外补充,这边简化前的程式码中将被e值取代的值,不只是1,2可无限延伸(3,4,5…)延伸到哪里依照使用者输入的数值进行规范,足以显示画图的范围即可。这部分相信自己有方式可处理此限制范围的。 但是目前仍卡在将此else if进行多次判断的问题。
作者: s4300026 (s4300026)   2018-08-28 12:03:00
话说可以给一下双循环的变量吗? 他们跟e有关系吗?
楼主: sa12e3   2018-08-28 12:33:00
c是使用者输入条件一个int数字(同时是界定范围的一个值),其他的a,b是两个for使用的变量。两个for中的a,b与e可由c来界定范围,e可设定为与a或b或c相关,也可让e自己设定为与a或b或c无关,但最后不管是哪个还是要有c来规范e避免造成不需要的影响。 不好意思,好像说明的不太明白,就跟一般用*画图的题目是相同的,还请前辈帮忙给个引导cor的方式,感谢。 不是很了解cor,查了cor感觉复杂,抓不到用在这里的重点方法。https://ideone.com/cuV48d先贴目前的程式码,之后再附加其他部分。
作者: sarafciel (Cattuz)   2018-08-28 15:02:00
https://ideone.com/jW7G2M 你把问题拆难了内层的循环要记得缩排 还有给变量有意义的名称
楼主: sa12e3   2018-08-28 15:18:00
好厉害,谢谢 您,研究一下,知道要给变量有意义的名称及缩排很重要,但目前急于学习方法,所以较注重于可先写出来内容,之后再更改习惯。 感谢 前辈提供另类写法及提醒编写习惯的重要性。
作者: yvb   2018-08-28 21:58:00
若可用 ?: 及 abs() 就更方便 ==> https://ideone.com/lcRBcG
楼主: sa12e3   2018-08-29 08:27:00
感谢 您的提供,原来还有这样的写法。真的没有想到, 前辈们果然厉害:)
作者: Killercat (杀人猫™)   2018-08-29 21:33:00
COR精神就是连续一大串传回bool的function, 一个接一个第一个function会检查自己能否处理 能就丢true 不能就false 给下一个处理。你这例子是逻辑过于简单 COR不合算,只是顺便提一下一般大量if-else是用COR处理较常见
楼主: sa12e3   2018-08-31 08:59:00
谢谢 前辈们的指导,受益良多。

Links booklink

Contact Us: admin [ a t ] ucptt.com