Using switch to identify even or dd
75 ビュー (過去 30 日間)
古いコメントを表示
Problem in brief: Print “Odd” if the argument is 1, 3, or 5, “Even” if the argument is 0, 2, or 4, and “Let me get back to you on that one.” for any other value.
function [y] = even_odd(x)
r = mod(x,2);
switch x
case x<=4 && r ==0
fprintf('even \n')
case x<=5 && r == 1
fprintf('odd \n')
otherwise
fprintf('i will get back to you on that \n')
end
end
I dont understand why this function doesn't give the correct response. Please provide insights.
2 件のコメント
MJFcoNaN
2022 年 7 月 20 日
Hello,
I will suggest you learn the basic programma of Matlab firstly. There may be significant discrepancy between languages.
採用された回答
Walter Roberson
2022 年 7 月 20 日
編集済み: Walter Roberson
2022 年 7 月 20 日
even_odd(-88)
even_odd(2)
even_odd(3)
even_odd(7)
function [y] = even_odd(x)
r = mod(x,2);
switch true
case x<=4 && r ==0
fprintf('even \n')
case x<=5 && r == 1
fprintf('odd \n')
otherwise
fprintf('i will get back to you on that \n')
end
end
2 件のコメント
Walter Roberson
2022 年 7 月 20 日
The value that you list in the switch statement is compared to the value listed in the case. The values in your case are things like x<=4 && r==0 which is a logical expression, so the values in your case are either true or false so you need to switch on one of true, false, 0, or 1 . You want to select the case that is true, so you have to switch on true
... in practice you do not need that comparison for x inside the switch. You might hypothetically want to test against
fprintf('%ld\n', flintmax)
which is the largest double precision integer that can be reliably tested for division by 2.
その他の回答 (2 件)
KSSV
2022 年 7 月 20 日
You have only two options x can be either even or odd..that's all.
x = 4 ;
r = mod(x,2);
if r == 0
fprintf('%d is Even\n',x)
else
fprintf('%d is Odd\n',x)
end
2 件のコメント
KSSV
2022 年 7 月 20 日
x = 5 ;
r = mod(x,2);
switch r
case 1
fprintf('%d is Odd\n',x)
case 0
fprintf('%d is Even\n',x)
end
David Hill
2022 年 7 月 20 日
function [y] = even_odd(x)
r = mod(x,2);
if x<=4 && r==0
fprintf('even \n')
elseif x<=5 && r==1
fprintf('odd \n')
else
fprintf('i will get back to you on that \n')
end
end
参考
カテゴリ
Help Center および File Exchange で Data Type Conversion についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!