Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

how can i check if n2 is a sub number of n1? (HW qst.)

Asked by Zaza on 4 Jan 2013

for ex.:

n1 = 123; n2 = 12; (n1>=n2)

n2 is a sub number of n1

i can't make any use of strings or arrays

7 Comments

Zaza on 4 Jan 2013

suppose i have

n1 = 12345;

how can i omit the first (in the highest power of 10) digit to get

n1 = 2345;

and so on

in this way if n2 is a sub number of n1 it'll match...

Azzi Abdelmalek on 4 Jan 2013

The highest power of 10 correspond to 1 not 5

Azzi Abdelmalek on 4 Jan 2013

check this

2345-fix(2345/10^3)*10^3

then

345-fix(345/10^2)*10^2

and so on

Zaza

Tags

Products

No products are associated with this question.

3 Answers

Answer by Sean de Wolski on 4 Jan 2013
Accepted answer

Here is a hint:

a = 131245;
b = 12;
op = @(x)hidden_for_you_to_figure_out(x);
pa = op(a);
pb = op(b);
isASub = false; %guilty until proven innocent
for ii = pb:pa
  amii = mod(a,(10^ii));
  if amii == b
      isASub = true;
      return;
  else
      for jj = 1:(ii-pb)            
          afjj = floor(amii./(10^jj));            
          if b == afjj
              isASub = true;
              return;
          end
      end
  end
end

All you have to do it figure out the contents of op().

1 Comment

Zaza on 6 Jan 2013

op() == num_of_digits() ???

Sean de Wolski
Answer by Azzi Abdelmalek on 4 Jan 2013
Edited by Azzi Abdelmalek on 4 Jan 2013
n1=12456;
n2=245
a=num2str(n1);
b=num2str(n2);
c=all(ismember(b,a))

if c is equal to 1 that means n2 is a sub number of n1

6 Comments

Azzi Abdelmalek on 4 Jan 2013

I will give you hints:

a=124 ;a1=1, a2=2, a3=4

to find a3:

 a3=fix(a/10^2); %(an=fix(a/10^(n-1))

In your previous question the number of digit in an integer number is

int=-123456789
digit_number=max(ceil(log10(abs(int))),1)
Zaza on 4 Jan 2013

can i use floor instead of fix?

Azzi Abdelmalek on 4 Jan 2013

Yes you can

Azzi Abdelmalek
Answer by Walter Roberson on 4 Jan 2013

Create a function that calculates the decimal expansion of a number in reverse order. mod() 10 gives the next digit to be output, integer division by 10, if the result is non-zero keep going.

Apply that to both numbers.

Now match the reversed n2 to the reversed n1.

0 Comments

Walter Roberson

Contact us