- accept their answer.
- acknowledge that you did not write it.
I need help displaying the max value in my while loop.
11 views (last 30 days)
Show older comments
Kevin Smith
on 24 Sep 2017
Answered: Image Analyst
on 24 Sep 2017
So I have wrote this code for a while loop/string:
str=input('Enter an integer greater than 1:','s');
num=str2double(str);
cnt=0;
while num>1
cnt=cnt+1;
if mod(num,2)
num=num*3+1;
else
num=num/2;
end
end
s=cnt
It takes any given integer, multiplies it by 3 then adds 1 if it is odd. It divides the number by 2 when it is even. Also "s" represents the number of steps it takes for the loop to reach the end, which is when it reaches '1'. What I am having trouble with is figuring out how to display the max value reached during the loop.
Example, if the user enters "3" the steps would be 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1.
I need the output to be "The max value is 16."
I have tried different codes for "max" such as 'max(num)' and 'max(cnt)' but I cannot figure out how to display the highest value.
1 Comment
Stephen23
on 24 Sep 2017
Edited: Stephen23
on 24 Sep 2017
"So I have wrote this code..."
Really?! You wrote that code? Interestingly that code looks nothing like the code that you wrote, and exactly like the code that I gave you in my answer to your earlier question:
When you take someone's code you should:
Copying work and claiming it as your own is called plagiarism.
Accepted Answer
Walter Roberson
on 24 Sep 2017
Edited: Walter Roberson
on 24 Sep 2017
str=input('Enter an integer greater than 1:','s');
num=str2double(str);
cnt=0;
maxnum = num;
while num>1
cnt=cnt+1;
if mod(num,2)
num=num*3+1;
else
num=num/2;
end
if num > maxnum; maxnum = num; end
end
s=cnt
maxnum
More Answers (1)
Image Analyst
on 24 Sep 2017
To " display the max value reached during the loop" you need to use fprintf(), assuming "during" means "inside". Here is your code with fprintf just before the bottom of the loop:
str=input('Enter an integer greater than 1:','s');
num=str2double(str);
iterationCount=0;
maxnum = num;
while num>1
iterationCount=iterationCount+1;
if mod(num,2)
num=num*3+1;
else
num=num/2;
end
if num > maxnum
maxnum = num;
end
fprintf('num = %d. The max after iteration #%d is %d\n', num, iterationCount, maxnum);
end
0 Comments
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!