问题描述
|
有两个值
$a
和$b
。我需要判断,$a
的大小不是b的3倍,$b
的大小不是$a
的3倍,ѭ5不是。
解释:
如果$a
= 5,$b
= 1,那么$b
* 3 = 3,$b
* 3 <$a
,则回显\'nothing \';
如果$a
= 5,$b
= 2则$b
* 3 = 6,$b
* 3>$a
,然后回显$a.\' and \'.$b;//5 and 6
如果$b
= 5,$a
= 1,那么$a
* 3 = 3,$a
* 3 <$b
,则回显\'nothing \';
如果$b
= 5,$a
= 2则$a
* 3 = 6,$a
* 3>$b
,然后回显$a.\' and \'.$b;//6 and 5
我的代码之一:
$a=\'5\';
$b=\'1\';
if ((!($a>=($b*3))) or (!($b>=($a*3)))){
echo $a.\' and \'.$b; //this may be echo \'nothing\'
}else{
echo \'nothing\';
}
解决方法
从您的示例中,如果值非常不同,您似乎想打印\'nothing \',但是如果值很接近(在3倍以内),则可以打印这些值。
您只需要修复测试行中的逻辑即可:
如果($ a <$ b * 3 && $ b <$ a * 3){
,将
$a[0]
,$a[1]
,$b[0]
和and32ѭ分别替换为$a
,$a
,$b
和$b
。
,这是您要问的吗?
函数checkAandB($ a,$ b)
{
if($ a == 0 || $ b == 0)
返回true;
否则,如果($ a / $ b> = 3 || $ b / $ a> = 3)
返回true;
其他
返回假
}
,//if $a = 5,$b=1 so $b*3 = 3,is still smaller than $a,then echo \'nothing\';
if ($a > $b) && ($a > $b*3) { echo \'nothing\'; }
//if $a = 5,$b=2 so $b*3 = 6,is bigger than $a,then echo $a.\' and \'.$b;//5 and 6
if ($a > $b) && ($a < $b*3) { echo $a . \' and \' . $b; }
//if $b = 5,$a=1 so $a*3 = 3,is still smaller than $b,then echo \'nothing\';
if ($b > $a) && ($b > $a*3) { echo \'nothing\'; }
//if $b = 5,$a=2 so $a*3 = 6,is bigger than $b,then echo $a.\' and \'.$b;//6 and 5
if ($b > $a) && ($b < $a*3) { echo $a . \' and \' . $b; }
如果$ a == $ b怎么办?
,我会比这简单得多。我喜欢一直跟随KISS。
如果一个人需要5秒钟以上的时间来阅读和理解我的台词,我会报废。
我会快速检查一下是大还是小,然后检查它们是否大3倍。也许不如您的“效率”高。但嗯:)。
function checkAandB($a,$b){
if $a >= $b //I assumed that if equal then it doesn\'t matter
$smaller = $b;
$bigger = $a
else
$smaller = $a; //fixed a typo in here
$bigger = $b;
if $smaller < (3 * $bigger )
do nothing
else
echo $a and $b
它是伪代码:)转换为您适合的语言。
,function compareAB($a,$b) {
return ($a < ($b * 3)) && ($b < ($a * 3)) ? \"$a and $b\" : \"nothing\";
}
echo compareAB(5,1); // nothing
echo compareAB(5,2); // 5 and 2