while loop or loop

2 vues (au cours des 30 derniers jours)
callum hayes
callum hayes le 10 Déc 2022
Déplacé(e) : Voss le 10 Déc 2022
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 commentaire
Voss
Voss le 10 Déc 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?

Connectez-vous pour commenter.

Réponse acceptée

Image Analyst
Image Analyst le 10 Déc 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:

Plus de réponses (2)

Voss
Voss le 10 Déc 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 commentaire
Image Analyst
Image Analyst le 10 Déc 2022
Déplacé(e) : Voss le 10 Déc 2022
Yes, the phrasing of the question is ambiguous.

Connectez-vous pour commenter.


Torsten
Torsten le 10 Déc 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

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by