Can you find the error in this code that aims to sum the digits of a string?
    8 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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 件のコメント
採用された回答
  Stephen23
      
      
 2019 年 1 月 6 日
        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 件のコメント
  Stephen23
      
      
 2019 年 1 月 6 日
				
      編集済み: Stephen23
      
      
 2019 年 1 月 6 日
  
			str-'0'
subtracts the character code for '0' (which is 48) from the character codes of the character array str. If all of the characters in str are digits then it converts the chracter representation of those digits into their numeric values, e.g.:
>> '1234'-'0'
ans =
   1   2   3   4
その他の回答 (1 件)
  Stephan
      
      
 2019 年 1 月 6 日
        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 件のコメント
参考
カテゴリ
				Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
			
	製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


