I nee to change this str2double code while keeping the same output for my collatz function.
Show older comments
The following is the script to my function:
function [steps,maxnum]=collatz(num)
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
I was told that I cannot use the str2double(str) function but I cannot figure out how to get the same output any other way. My script is supposed to take a number greater than 1 and apply a while loop by multiplying the integer by 3 then adding 1 if it is odd or dividing it by 2 if it is an even number until the function equals 1, where the loop ends. I need a different method for finding the steps it takes for the loop to end. For example if the user enters "3" the steps would be 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1. I would need the output to be s=7 %meaning it took 7 steps to complete the loop m=16 %representing the maximum number reached during the loop
3 Comments
KSSV
on 25 Sep 2017
That's fine...what problem with the code?
Stephen23
on 25 Sep 2017
@KSSV: there is nothing wrong with the code. The problem is the ill-informed tutor.
Kevin Smith
on 25 Sep 2017
Edited: Kevin Smith
on 25 Sep 2017
Accepted Answer
More Answers (1)
Walter Roberson
on 25 Sep 2017
1 vote
Why are you prompting for a value instead of passing the value on the command line, since you do have num as a parameter for your function?
1 Comment
Kevin Smith
on 25 Sep 2017
Categories
Find more on Resampling Techniques 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!