Can you find the error in this code that aims to sum the digits of a string?
23 views (last 30 days)
Show older comments
I wrote this code in order to sum the digits of any string, and to also create a loop that stops the summing process when the length of the sum is equal to a single digit.
What's wrong?
n = '12361927'
function d = sumdigits(n)
s=0
for i=1:length(n)
s=s+str2double(n(i))
end
end
s=sumdigits(n)
if length(str2num(s))==1
s=s
else
while length(str2num(s))~=1
if length(str2num(s))==1
break
else
s=sumdigits(s)
end
end
end
0 Comments
Accepted Answer
Stephen23
on 6 Jan 2019
Simpler:
str = '12361927'
while numel(str)>1
num = sum(str-'0')
str = num2str(num)
end
Prints this in the command window:
str = 12361927
num = 31
str = 31
num = 4
str = 4
3 Comments
More Answers (1)
Stephan
on 6 Jan 2019
Hi,
try :
n = '12361927'
s=num2str(sumdigits(n))
if strlength(s)==1
s=s;
disp('here')
else
while strlength(s)~=1
if strlength(s)==1
break
else
s=num2str(sumdigits(s))
end
end
end
function d = sumdigits(n)
s=0;
for i=1:length(n)
s=s+str2double(n(i));
end
d=s;
end
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements 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!