Clear Filters
Clear Filters

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

4 views (last 30 days)
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

Answers (1)

Image Analyst
Image Analyst on 26 Feb 2022
Replace
else y<x<z
with
elseif (y < x) && (x < z)
  1 Comment
Steven Lord
Steven Lord on 27 Feb 2022
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.

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!