# help solving string question

1 view (last 30 days)

Show older comments

Joseph Pauwels
on 7 May 2014

Answered: Joshua Amuga
on 2 Nov 2016

Durring my last semester, we were given a bonus quiz to write a function the received and numberical input and produced the revise as an output.

example a=123

b=321

we were not allowed to use any string variable or function. Any ideas now that the semester is over Id like to know what you think.

My original thought was to divide the input but the got harder with larger number as the function should receive any number

### Accepted Answer

Star Strider
on 7 May 2014

This works, but obviously only for integers:

a = 123;

% a = fix(rand*1E6) % Test Integer

La = fix(log10(a));

x = a;

for k1 = La:-1:0

d(k1+1) = fix(x/(10^k1));

x = rem(x,10^k1);

end

v10 = 10.^(La:-1:0)';

Flipped_a = d*v10

The Flipped_a variable is the result. I tested it on other random integers as well.

##### 3 Comments

Wesley Ooms
on 8 May 2014

fix, log10, rand, and rem are functions. The way i read the question is that no function is allowed.

### More Answers (4)

Carlos
on 7 May 2014

a=[1 2 3 4 5];

>> b=zeros(1,length(a));

count=1;

l=length(a);

while(count<=l)

b(count)=a(l+1-count);

count=count+1;

end

Wesley Ooms
on 7 May 2014

totally not optimized, but this will do the trick:

clear a b

a=32385

i=1

while floor(a/10)

b(i)=a-floor(a/10)*10

i=i+1

a =floor(a/10)

end

b(i)=a

d=1

e=0

for c=0:numel(b)-1

e=e+d*b(end-c)

d=d*10

end

##### 5 Comments

Wesley Ooms
on 8 May 2014

the following code also works but is faster for large numbers since it predetermines the size of the number

function b=swapnumber(a)

b=0;d=0;while a>1;a=.1*a;d=d+1;end

for i=0:d;c=0:a*10;c=c(end);b=b+c*10^i;a=a*10-c;end

Sagar Damle
on 7 May 2014

Edited: Sagar Damle
on 8 May 2014

I think the code which I am going to put here is the standard code to reverse a number.(This code is used in C language,of course,according to its own syntax!)Also,it is easy to understand.Remember this code,I think it is very helpful!

a = 126986;

b = a; % Save value of "a" in new variable "b".

reverse = 0;

while b > 0 % OR while b ~= 0 (Both 'while' statements are same.)

r = rem(b,10);

reverse = reverse * 10 + r;

b = floor(b/10);

end

a

reverse

##### 0 Comments

Joshua Amuga
on 2 Nov 2016

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!