Switch/Case and operators
48 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I running this code and and I don't understand why it is writing me that x is less than y... can you help me figure this out?
>> x = 222, y = 3;
switch x
case x==y
disp('x and y are equal');
case x>y
disp('x is greater than y');
otherwise
disp('x is less than y');
end
x =x =
222
x is less than y
thank's.
3 commentaires
samaneh
le 23 Mai 2021
Dear Googo,
The resullt of Relational Operators is Boolean meaning it takes value 1 for true and 0 for false. Hence case can only be 0 or 1 in your code, which is not desired velue for your x. That's why "otherwise" and "disp('x is less than y');" will be executed for any value of your x and y.
The solution is that, you put x beside of your Relational Operators to keep the value of the x, such as bellow.
>> x = 222, y = 3;
switch x
case x*(x==y)
disp('x and y are equal');
case x*(x>y)
disp('x is greater than y');
otherwise
disp('x is less than y');
end
%%%%%% Result %%%%%
x =
222
x is greater than y
Réponse acceptée
Azzi Abdelmalek
le 25 Mar 2013
Modifié(e) : Azzi Abdelmalek
le 25 Mar 2013
In your case you should use if/elseif
x = 222, y = 3;
if x==y
disp('x and y are equal');
elseif x>y
disp('x is greater than y');
else
disp('x is less than y');
end
2 commentaires
Plus de réponses (3)
Jan
le 25 Mar 2013
Don't do this. Let sprintf care about leading zeros:
a = [1,2,800];
sprintf('%d/%d/%04d', a);
0 commentaires
Benhur Tekeste
le 14 Fév 2019
Hi, there.
From my point of view, the resullt of comparison operation is Boolean meaning it takes value 1 for true and 0 for false. Hence first the relational operation besides the case is evaluated and then compared to the expression besides the switch.
x = 222, y = 3;
switch x
case x==y % once the program runs, it will find that x is not equal to y meaning it is false and it
has value of zero. And zero is not equal to the value of x therefore it willnot
execute this body.
disp('x and y are equal');% same here too but x is greater than y it is true and has value of 1 but
1 is not equal to 222 therefore body in otherwise is executed
case x>y
disp('x is greater than y');
otherwise
disp('x is less than y');
end
1 commentaire
thejas av
le 20 Mai 2021
Modifié(e) : Walter Roberson
le 20 Mai 2021
switch(m)
case 1
if(d>=1 && d<=19)
message = sprintf('\noptimistic, lovers of freedom, hilarious, fair-minded, honest and intellectual. \nThey are spontaneous and fun, usually with a lot of friends');
%data=text( message, 'FontSize',12, 'Color', [.6 .2 .6]);
text(-1800,800,message, 'FontSize',9, 'Color', [.6 .2 .6]);
else
message = sprintf('\nThey are ambitious, organized, practical, goal-oriented, and they do not mind the hustle.\n“They are ready to give up a lot in order to achieve that goal,” Verk says. \nThey also love making their own rules, which means they strive to reach high career positions.');
%data=text( message, 'FontSize',12, 'Color', [.6 .2 .6]);
text(-1800,800,message, 'FontSize',9, 'Color', [.6 .2 .6]);
end
case 2
if(d>=1 && d<=19)
message = sprintf('\nThey are ambitious, organized, practical, goal-oriented, and they do not mind the hustle.\n“They are ready to give up a lot in order to achieve that goal,” Verk says. \nThey also love making their own rules, which means they strive to reach high career positions.');
%data=text( message, 'FontSize',12, 'Color', [.6 .2 .6]);
text(-1800,800,message, 'FontSize',9, 'Color', [.6 .2 .6]);
else
message = sprintf('\n Progressive, original, independent, humanitarian\nRuns from emotional expression, temperamental, uncompromising, aloof\nFun with friends, helping others, fighting for causes, intellectual conversation, a good listener\n Limitations, broken promises, being lonely, dull or boring situations, people who disagree with them.');
%data=text( message, 'FontSize',12, 'Color', [.6 .2 .6]);
text(-1800,800,message, 'FontSize',9, 'Color', [.6 .2 .6]);
end
end
1 commentaire
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!