How to reverse a number

37 visualizzazioni (ultimi 30 giorni)
sss dzu
sss dzu il 1 Dic 2012
Hi, I want to reverse a number, not a vector, like 8549 to 9458. I used fliplr , or flipud, or y = x(end:-1:1), They just work for row vector. Please, help. Thank you

Risposte (8)

Azzi Abdelmalek
Azzi Abdelmalek il 1 Dic 2012
Modificato: Azzi Abdelmalek il 1 Dic 2012
a=8549
out=str2num(fliplr(num2str(a)))

Roger Stafford
Roger Stafford il 21 Nov 2014
@Jessica: Let x be a non-negative integer. Then y will have the decimal digits of x in reversed order.
y = 0;
while x > 0
t = mod(x,10);
y = 10*y+t;
x = (x-t)/10;
end
  2 Commenti
Kunal  Kabi
Kunal Kabi il 8 Giu 2017
Thank you sir because of you i got the idea @RogerStafford.
ABHAS BHATIA
ABHAS BHATIA il 14 Gen 2018
Thanks for the solution @Jessica

Accedi per commentare.


Kunal  Kabi
Kunal Kabi il 8 Giu 2017
Modificato: Jan il 28 Ago 2019
If you want to find palindrome numbers between two range here is the answer
clc;
clear all;
close all;
num=input('Enter first range:');
num1=input('Enter second range:');
for i=num:num1
temp=i;
reverse=0;
while temp > 0
t = mod(temp,10);
reverse = 10*reverse+t;
temp = (temp-t)/10;
end
if i==reverse
fprintf('Number is palindrome. %d\n',reverse);
end
end

Jan
Jan il 14 Gen 2018
Modificato: Jan il 14 Gen 2018
A vectorized version of Roger's method:
n = 8549;
d = 10 .^ (0:floor(log10(n))); % [1 10, 100, 1000]
v = rem(floor(n ./ d), 10); % The vector of digits
r = v * flip(d).' % Vector multiplication with [1000, 100, 10, 1]

José-Luis
José-Luis il 1 Dic 2012
A vectorized, faster alternative
For integers:
your_answer = flipud(sscanf(fliplr(sprintf('%d ',a)),'%d '));
And floating point:
your_answer = flipud(sscanf(fliplr(sprintf('%f ',a)),'%f '));
Example:
a=randi(115422,10000,1);
your_val = flipud(sscanf(fliplr(sprintf('%d ',a)),'%d '));

Jessica
Jessica il 21 Nov 2014
what if you aren't allowed to use any string variables, string related function, digitrevorder() and fliplr()??
  1 Commento
Andrew Reibold
Andrew Reibold il 21 Nov 2014
Then you can do divide by 10 tricks with rounding to save each digit, then rearrange after.

Accedi per commentare.


Kunal  Kabi
Kunal Kabi il 8 Giu 2017
Here is your answer
clc;
clear all;
close all;
num=input('Enter a number:');
num1=num;
reverse=0;
while num1 > 0
t = mod(num1,10);
reverse = 10*reverse+t;
num1 = (num1-t)/10;
end
reverse
num
if num==reverse
disp('Number is palindrome.');
else
disp('Number is not palindrome');
end

ANIRUDDHA
ANIRUDDHA il 6 Set 2022
  1. Using function statement, find out the sum of the inverse of any two numbers, a, b. Choose any value of a and b to run program?
  1 Commento
Walter Roberson
Walter Roberson il 6 Set 2022
This does not appear to be an answer to the question that was asked.

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by