How do you use logical operators for this problem in multiple unnested if statements?

2 次查看(过去 30 天)
I'm given the following:
x=0:3:21;
y=10;
z=15;
When x < y and z, the code has to dispaly "Value is less that y and z". When y<x<z, the code has to display "Value is between y and z". When x > y and z, the code has to display " Value is greater than y and z." I was able to do this with a for loop and nested if statements, but I also have to write the code using unnested if statements. My code either gives logical array instead of a displayed answer or an error statement. This is what I have so far, and it gives a logical array.
x=0:3:21;
y=10;
z=15;
if x<y %& x<z %y is less than z, so if x is less than y, then x must also be less than z
disp('Value is less than y and z')
elseif x>z & x>y %z is greater than y, so if x is greater than z, then x must also be greater than y
disp('Value is more than y and z')
else y<x<z
disp('Value is between y and z')
end
ans = 1×8 logical array
1 1 1 1 1 1 1 1
Value is between y and z

回答(1 个)

Image Analyst
Image Analyst 2022-2-26
Replace
else y<x<z
with
elseif (y < x) && (x < z)
  1 个评论
Steven Lord
Steven Lord 2022-2-27
Because x is a vector that won't work. You could wrap the conditions in all or any to get it to work or you could use the non-short-circuiting and operator &.
x = 1:10;
y = 0;
z = 11;
all(y < x) && all(x < z) % true
ans = logical
1
(y < x) & (x < z) % vector of true values
ans = 1×10 logical array
1 1 1 1 1 1 1 1 1 1
(y < x) && (x < z) % error
Operands to the logical and (&&) and or (||) operators must be convertible to logical scalar values.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by