Extract numbers from an integer

3 ビュー (過去 30 日間)
Jennifer Pettersson
Jennifer Pettersson 2017 年 11 月 12 日
編集済み: Stephen23 2017 年 11 月 16 日
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 件)

Jan
Jan 2017 年 11 月 12 日
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 件のコメント
Jennifer Pettersson
Jennifer Pettersson 2017 年 11 月 12 日
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.
Jan
Jan 2017 年 11 月 13 日
編集済み: Jan 2017 年 11 月 13 日
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.

サインインしてコメントする。


KL
KL 2017 年 11 月 12 日
N = 123411;
noOfOnes = nnz((dec2base(N,10) - '0')==1);
  1 件のコメント
Jennifer Pettersson
Jennifer Pettersson 2017 年 11 月 12 日
Wow! Thanks alot!

サインインしてコメントする。


Jennifer Pettersson
Jennifer Pettersson 2017 年 11 月 16 日
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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by