Help with conidtional loops?

Taylor Gates (view profile)

on 19 Jul 2018
Latest activity Edited by OCDER

on 19 Jul 2018

Christopher Wallace (view profile)

Everything in the code works like I want it to except I need the code to end if a guess is higher than 10. it will display 'dumb' but also needs to end the program. I can't get it to break the code.
%%Guess Number Game
R=floor ( rand()*10 );
count=0;
for i=0:5
while(i~=5)
guess=input('Guess a number between 0 and 10')
if (R>guess)
elseif (R<guess)
elseif (R==guess)
disp('You are Correct! It is')
end
if (guess>10)
disp('DUMB')
break;
end
count=count+1
if count==3;
disp ('You Failed The Game, Try Again')
count=0;
break;
end
end
end

Walter Roberson

Walter Roberson (view profile)

on 19 Jul 2018
Why are you using while inside of for? The body of your while never modifies i, so the while loop is not going to end until it hits one of the two "break" statements.
Your current code would play the game 5 times, once for i = 0, once for i = 1, 2, 3, 4. Then your "for" loop extends to i = 5, but your while excludes that case so nothing would be done for that case, so why bother to have the while, why not just end i at 4 ?
Taylor Gates

Taylor Gates (view profile)

on 19 Jul 2018
Here's what I just came up with. It will end it if a guess is higher than 10 and display dumb. However, it will end the game after 3 wrong guesses. After 3 guesses it should say you failed the game but let you try again lets say 4 more times and THEN end the whole code. Any insight?
%%Guess Number Game
R=floor ( rand()*10 );
count=0;
i=0
while(i<6)
guess=input('Guess a number between 0 and 10')
if (guess>10)
i=5
disp('DUMB')
end
if (R>guess)
elseif (R<guess)
elseif (R==guess)
disp('You are Correct! It is')
end
count=count+1
if count==3;
disp ('You Failed The Game, Try Again')
count=0;
break;
end
i=i+1
end

on 19 Jul 2018

on 19 Jul 2018
Edited by OCDER

OCDER (view profile)

on 19 Jul 2018

Keep track of how many games and how many trials were done, and the status of the game as WonGame = 0 or WonGame = 1.
%%Guess Number Game
WonGame = 0;
GameCount = 0;
while ~WonGame
if GameCount >= 5
disp('You Failed The Game 5 Times! No more!')
break
end
R = randi(9); %floor( rand()*10 );
Guess = Inf;
count = 0;
while 1
%guess = round(input('Guess a number between 0 and 10: ')); %DID YOU WANT IT 0,..., 10? or 1,...,9???
guess = round(input('Guess an integer between 0 and 10: '));
if guess>=10 || guess <= 0
disp('DUMB. Integer must be > 0 and < 10.')
elseif (R>guess)
elseif (R<guess)
elseif (R==guess)
disp('You are Correct! It is')
WonGame = 1;
break
end
count = count + 1;
if count == 3
disp('You Failed The Guess in 3 Tries')
break
end
end
GameCount = GameCount + 1;
end

Taylor Gates

Taylor Gates (view profile)

on 19 Jul 2018
Here's what I just came up with. It will end it if a guess is higher than 10 and display dumb. However, it will end the game after 3 wrong guesses. After 3 guesses it should say you failed the game but let you try again lets say 4 more times and THEN end the whole code. Any insight?
%%Guess Number Game
R=floor ( rand()*10 ); count=0;
i=0 while(i<6)
guess=input('Guess a number between 0 and 10')
if (guess>10)
i=5
disp('DUMB')
end
if (R>guess)
elseif (R<guess)
elseif (R==guess)
disp('You are Correct! It is')
end
count=count+1
if count==3;
disp ('You Failed The Game, Try Again')
count=0;
break;
end
i=i+1
end
OCDER

on 19 Jul 2018