Extract numbers from an integer

I want to write code that allows the user to enter a number, for example 123411 and that matlab answers with how many ones the input contains, in this case 3. Can't seem to figure this out!

回答(4 个)

This sounds like a homework question. The solution is not hard and it should be possible to solve. Unfortunately you did not post, what you have tried so far and did not ask a specific question. So how can we help you beside posting the working solution?
s = input('Type in the number: ', 's');
n1 = sum(s == '1')
And now? Can you submit this as your solution? Does it help you to learn Matlab if I post a solution?
Read the docs for nnz for a slightly different solution. And for the next time, please post you code (even if it is not working) and ask specific questions.

2 个评论

Well, you're right.. I've tried for several hours with both ismember and find but neither did work, or even be near the solution.
This is fine also:
sum(ismember(s, '1'))
length(find(s == '1'))
length(strfind(s, '1'))
If the number is provided numerically, use sprintf('%g') to convert it to a CHAR vector.

请先登录,再进行评论。

N = 123411;
noOfOnes = nnz((dec2base(N,10) - '0')==1);
Jennifer Pettersson
Jennifer Pettersson 2017-11-16

0 个投票

Is there any possibility to solve this with integers only? For example with mod instead? Can't seem to figure this out!
Stephen23
Stephen23 2017-11-16
编辑:Stephen23 2017-11-16
If you do not want to convert to string and can only perform numeric operations, then you can use mod and division in a loop:
N = 123411;
C = 0;
while N>0
C = C+(1==mod(N,10));
N = floor(N/10);
end
giving:
>> C
C = 3

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by