Using switch to identify even or dd
    18 views (last 30 days)
  
       Show older comments
    
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 Comments
  MJFcoNaN
      
 on 20 Jul 2022
				Hello,
I will suggest you learn the basic programma of Matlab firstly. There may be significant discrepancy between languages.
Accepted Answer
  Walter Roberson
      
      
 on 20 Jul 2022
        
      Edited: Walter Roberson
      
      
 on 20 Jul 2022
  
      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 Comments
  Walter Roberson
      
      
 on 20 Jul 2022
				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.
More Answers (2)
  KSSV
      
      
 on 20 Jul 2022
        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 Comments
  KSSV
      
      
 on 20 Jul 2022
				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
      
      
 on 20 Jul 2022
        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
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



