fprintf from a switch/case?

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.

Réponses (2)

Henrik
Henrik le 27 Nov 2014

0 votes

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 commentaires

Alyssa
Alyssa le 27 Nov 2014
It does, thank you!
I am still new at this but I understand what you did and it makes sense. I never thought to break it up like you did, thank you
Henrik
Henrik le 27 Nov 2014
You are welcome :)
Henrik
Henrik le 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'])
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 )

Connectez-vous pour commenter.

Stephen23
Stephen23 le 1 Déc 2014

0 votes

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.

Catégories

En savoir plus sur App Building dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by