Beginner Question -- IF loop (code at beginning of post)
1 回表示 (過去 30 日間)
古いコメントを表示
% 1. Greetings
fprintf(['\n Welcome! This program integrates and plots a 2D function of x. You may now choose your integration method.' ...
' \n Enter ''1'' for Rectangle Rule; ''2'' for Trapezium Rule; and ''3'' for Simpson''s Rule. \n\n'])
C = input ('Enter your choice = '); % Variable 'C' is chosen as 'C' for Choice
if C == 1;
run Rectangle_Rule
elseif C == 2;
run Trapezium_Rule
elseif C == 3;
run Simpsons_Rule
else
fprintf(['\n ------------------------------------------------------------------------------------------------------------' ...
'\n OPTION INVALID. PLEASE TRY AGAIN.'...
'\n ------------------------------------------------------------------------------------------------------------ \n'])
run Numeric_Integration
end
I want the fprintf and re-run of numeric integration to work at all cases. The code above works fine when what is input is a number or a an alphabet with apostrophes, e.g., 'code', 'A'; but if it is just a letter with no apostrophes, it doesn't *. For example, I try to enter *test This message appears:
Error using input
Undefined function or variable 'test'.
Error in Numeric_Integration (line 7)
C = input ('Enter your choice = '); % Variable 'C' is chosen as 'C' for Choice
How do I go around this problem?
Also, is there anyway that when it loops back to give the user another try to not show the welcome message again - this is what happens if I use run Numeric_Integration after else. Is there a code to make it just loop back to C = input ('Enter your choice = '); ?
Cheers
2 件のコメント
Walter Roberson
2013 年 3 月 26 日
A note on your title: there is no such thing as an "if loop". There are "for loop" and "while loop", but "if" is an "if statement".
採用された回答
Matt Kindig
2013 年 3 月 26 日
For the input issue, use the option 's' to convert the input to string at the prompt, and then use str2double() to convert it to numeric if necessary. For example:
C = input('Enter your choice = ', 's');
C = str2double(C); %this will be NaN for *test and other strings, and thus will fall through to the "else" statement.
As for the looping question, wrap all of your statements after the welcome message with a while() loop, with some appropriate break condition. At the prompt, type
doc while
to bring up some useful help.
2 件のコメント
Matt Kindig
2013 年 3 月 26 日
編集済み: Matt Kindig
2013 年 3 月 26 日
By the way, you don't need the 'run' part of the commands-- just Rectangle_Rule, Trapezium_Rule, etc. will work fine.
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!