while loop or loop
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
i want the user the to give an estimation, how would i use a while or for loop so if the value is 2500<x<2501, it repeats the question until the user is correct. Thanks very much
1 Commento
Voss
il 10 Dic 2022
Your question seems to imply that x <= 2500 or x >= 2501 is the "correct" answer in this context. Is that right?
Or is 2500<x<2501 the "correct" answer, and you want the loop to run as long as x <= 2500 or x >= 2501?
Risposta accettata
Image Analyst
il 10 Dic 2022
See this snippet and adapt as needed:
% Demonstration of how to avoid an infinite loop by setting up a failsafe.
% Set up a failsafe
maxIterations = 10; % Way more than you think it would ever need.
loopCounter = 0;
% Now loop until we obtain the required condition: x is between 2500 and 2501.
% If that never happens, the failsafe will kick us out of the loop so we do not get an infinite loop.
x = 0; % Initialize so we can enter the loop the first time.
while ((x < 2500) || (x > 2501)) && loopCounter < maxIterations
x = input('Enter x (or Ctrl c to quit) : ');
loopCounter = loopCounter + 1;
fprintf('On Iteration #%d, x = %f.\n', loopCounter, x)
end
% Alert user if we exited normally, or if the failsafe kicked us out to avoid an infinite loop.
if loopCounter < maxIterations
% Then the loop found the condition and exited early, which means normally.
fprintf('Loop exited normally after %d iterations.\n', loopCounter);
else
% Then the loop never found the condition and exited when the number of iterations
% hit the maximum number of iterations allowed, which means abnormally.
fprintf('Loop exited abnormally after iterating the maximimum number of iterations (%d) without obtaining the exit criteria.\n', maxIterations);
end
fprintf('All done after %d iterations.\n', loopCounter)
To learn other fundamental concepts, invest 2 hours of your time here:
0 Commenti
Più risposte (2)
Voss
il 10 Dic 2022
Something like this:
x = 2500.5; % initialize x to a value that will cause the loop to run
while x > 2500 && x < 2501
% code to "repeat the question" and get a new x value goes here
end
Or this:
while true
% ask the question and get an x value here
if x <= 2500 || x >= 2501
% x outside the range: exit the loop
break
end
end
1 Commento
Image Analyst
il 10 Dic 2022
Spostato: Voss
il 10 Dic 2022
Yes, the phrasing of the question is ambiguous.
Torsten
il 10 Dic 2022
prompt = "Input x ";
x = input(prompt)
while x > 2500 && x < 2501
disp("Wrong value for x")
disp("x must not be in the interval (2500 2501)"
prompt = "Input x ";
x = input(prompt)
end
0 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!