A query relating a function with 3 input arguments.

My code is:
function i = Three_inputsFunction (x,y,z)
if x>y>z || y>x>z
x+y
elseif x<y<z || x<z<y
y+z
else
x+z
end
end
>> Three_inputsFunction (-18,-3,-6)
ans =
-21
Query : Why is the answer '-21' and not '-9'?

 Accepted Answer

"Why is the answer '-21' and not '-9'?"
Because this code
x>y>z
(x>y)>z
which (because true==1 and false==0) is equivalent to either of these
1>z
0>z
You need this instead:
x>y && y>z
Also note that you do not define the function output i.

6 Comments

Fixed it for you too:
Three_inputsFunction (-18,-3,-6)
ans = -9
function Three_inputsFunction(x,y,z)
if x>y && y>z || y>x && x>z
x+y
elseif x<y && y<z || x<z && z<y
y+z
else
x+z
end
end
i see, understood.
but confused with your 2nd elaboration :
1>z
0>z
Would you mind detailing me please. I am new to Matlab.
Thanks for your quick reply though. :)
"Would you mind detailing me please."
This comparison
x>y
can return either
true
or
false
so your code (I added the parentheses for clarity, but these do not change the order of operations):
(x>y)>z
will give either of these two situations:
(true)>z
(false)>z
or using the equivalent numeric values (in MATLAB true==1 and false==0):
(1)>z
(0)>z
from which we can trivially remove the parentheses:
1>z
0>z
So you thought you were performing a comparison of three variables, but in reality you were actually just comparing z against zero or one. The rules of precedence explain why.
@Alek Poudel: you can also show your thanks by accepting my answer :)
ohh yeah, done! didn't know about that before. Cheers!

Sign in to comment.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!