fprintf from a switch/case?
1 view (last 30 days)
Show older comments
Hello, so I'm doing a problem for an assignment and I was wondering if someone would be able to help me.
The problem is 8.16
So far I have
major = menu('Select an engineering major: ','Civil','Chemical','Computer','Electrical','Mechanical')
switch major
case 1
disp('130');
case 2
disp('130');
case 3
disp('122');
case 4
disp('126.5');
case 5
disp('129');
end
fprintf('The minimum number of credits is: %3.1f \n', major)
But I want the number in the disp() to show in my fprintf, not the case number.
0 Comments
Answers (2)
Henrik
on 27 Nov 2014
This is not the most sophisticated solution, but it works..
switch major
case 1
text_to_print='130';
case 2
text_to_print='130';
case 3
text_to_print='122';
case 4
text_to_print='126.5';
case 5
text_to_print='129';
end
fprintf(['The minimum number of credits is: ' text_to_print '\n'])
4 Comments
Henrik
on 27 Nov 2014
By the way, switch can also work with text, here's a simple example:
test_string='horse';
switch test_string
case 'horse'
disp('This is a horse')
end
You might be able to do something like
switch major
case 'Civil'
text_to_print='130'
etc. Just a thought.
Or maybe
switch major
case 'Civil'
credits=130;
etc
fprintf(['The minimum number of credits is: ' num2str(credits) '\n'])
per isakson
on 27 Nov 2014
This line
fprintf(['The minimum number of credits is: ' num2str(credits) '\n'])
may be replaced by
fprintf( 'The minimum number of credits is: %.1f\n' credits )
Stephen23
on 1 Dec 2014
The following code does much the same as Henrik's answer, but it also:
- returns the name of the major as well as the credit value.
- uses the major's name in the switch statement, which makes it clearer which credits belong to what major.
- uses an fprintf number format that only displays the decimal fraction if it is not zero.
AllMaj = {'Civil','Chemical','Computer','Electrical','Mechanical'};
major = AllMaj{menu('Select an engineering major: ',AllMaj{:})};
switch lower(major)
case 'civil'
pts = 130;
case 'chemical'
pts = 130;
case 'computer'
pts = 122;
case 'electrical'
pts = 126.5;
case 'mechanical'
pts = 129;
end
fprintf('The minimum number of credits for %s Engineering is: %.4g\n',major,pts)
Although the assignment clearly states this prerequisite, using switch is a little heavy handed, and using an array instead would probably be a lot simpler and tidier.
0 Comments
See Also
Categories
Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!