Use elseif inside a case switch. What is Wrong with my code? Only the first "if" case only works none of the elseif work?? Please any advice would help.

clc
clear all
disp ('Cody,Ward')
disp ('EG167, 07')
disp('Assignment #12')
disp(' ')
disp ('Problem: #21')
disp(' ')
rp=input('What is the rental period for the car (days): ');
cartype=input('What type of car class (B, C, D) ?: ','s');
switch cartype
case 'B'
if (1<rp) && (rp<6);
cost=rp*27;
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif rp==7;
n=162
cost=n
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif (7<rp) && (rp<27);
n=rp-7;
cost=162+(n*25);
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif rp==28;
n=662;
cost=n;
fprintf('\nThe rental cost is $%3.2f.\n\n',cost')
elseif (28<rp) && (rp<=60);
n=rp-28;
cost=662+(n*23);
fprintf('\nThe rental cost is $%3.2f.\n\n',cost')
else rp>60;
fprintf('\nRental is not available for more than 60 days.\n\n')
end
case 'C'
if (1<rp) && (rp<6);
cost=rp*34;
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif rp==7;
n=204
cost=n
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif (7<rp) && (rp<27);
n=rp-7;
cost=162+(n*31);
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif rp==28;
n=824;
cost=n;
fprintf('\nThe rental cost is $%3.2f.\n\n',cost')
elseif (28<rp) && (rp<=60);
n=rp-28;
cost=824+(n*28);
fprintf('\nThe rental cost is $%3.2f.\n\n',cost')
else rp>60;
fprintf('\nRental is not available for more than 60 days.\n\n')
end
case 'D'
if (1<rp) && (rp<6);
fprintf('\nClass D cannot be rented for less than 7 days.\n\n')
elseif rp==7;
n=276
cost=n
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif (7<rp) && (rp<27);
n=rp-7;
cost=204+(n*31);
fprintf('\nThe car rental cost is $%3.2f.\n\n',cost')
elseif rp==28;
n=1136;
cost=n;
fprintf('\nThe rental cost is $%3.2f.\n\n',cost')
elseif (28<rp) && (rp<=60);
n=rp-28;
cost=1136+(n*28);
fprintf('\nThe rental cost is $%3.2f.\n\n',cost')
else rp>60;
fprintf('\nRental is not available for more than 60 days.\n\n')
end
end

 채택된 답변

x = 0.1;
if 0 < x < 0.2
disp('hello')
end
This sort of "IF" test does not work in MATLAB.
What happens is it first checks (0 < x)? --> true (=1)
Then (1 < 0.2)? --> false
Instead you have to write out both conditions like this:
x = 0.1;
if (0 < x) && (x < 0.2)
disp('hello')
end

댓글 수: 3

good catch, I didn't notice that one :)
Perfect
Works great
Thanks Teja and Paulo
Can you point to where this is in the help menu?
>> doc if
Or
Just for more general information,
Help -> MATLAB -> Getting Started -> Programming

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

This condition
elseif 7<rp<=27;
is valid for rp=27 so why do you have this one
elseif rp==27;
after it?

댓글 수: 7

Thanks, Paulo
I fixed that part and the other conditions. But it still only uses the first if for each case.
Any other Ideas?
you still need to fix the code for the error that Teja found, even in the elseif lines you still got the error.
Thank you again.
I reposted the final code I'm going to run some final tests yet.
you also don't need to put ; in the if and elseif
Not following what you mean?
if (1<rp) && (rp<6); -> if (1<rp) && (rp<6)

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Debugging and Improving Code에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by