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'?

 Réponse acceptée

Stephen23
Stephen23 le 12 Août 2021
Modifié(e) : Stephen23 le 12 Août 2021
"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 commentaires

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. :)
Stephen23
Stephen23 le 12 Août 2021
Modifié(e) : Stephen23 le 12 Août 2021
"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.
Alright, many thanks!
Stephen23
Stephen23 le 12 Août 2021
@Alek Poudel: you can also show your thanks by accepting my answer :)
ohh yeah, done! didn't know about that before. Cheers!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by