fprintf from a switch/case?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuestas (2)
Henrik
el 27 de Nov. de 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 comentarios
Henrik
el 27 de Nov. de 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
el 27 de Nov. de 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
el 1 de Dic. de 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 comentarios
Ver también
Categorías
Más información sobre Statistics and Machine Learning Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!