Borrar filtros
Borrar filtros

How to reverse a number

28 visualizaciones (últimos 30 días)
sss dzu
sss dzu el 1 de Dic. de 2012
Comentada: Walter Roberson el 6 de Sept. de 2022
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

Respuestas (8)

Azzi Abdelmalek
Azzi Abdelmalek el 1 de Dic. de 2012
Editada: Azzi Abdelmalek el 1 de Dic. de 2012
a=8549
out=str2num(fliplr(num2str(a)))
  3 comentarios
János Stenszky
János Stenszky el 14 de Mayo de 2018
Thanks!
Uchechukwu Obimma
Uchechukwu Obimma el 11 de Mayo de 2020
Thanks

Iniciar sesión para comentar.


Roger Stafford
Roger Stafford el 21 de Nov. de 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 comentarios
Kunal  Kabi
Kunal Kabi el 8 de Jun. de 2017
Thank you sir because of you i got the idea @RogerStafford.
ABHAS BHATIA
ABHAS BHATIA el 14 de En. de 2018
Thanks for the solution @Jessica

Iniciar sesión para comentar.


Kunal  Kabi
Kunal Kabi el 8 de Jun. de 2017
Editada: Jan el 28 de Ag. de 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 el 14 de En. de 2018
Editada: Jan el 14 de En. de 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 el 1 de Dic. de 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 el 21 de Nov. de 2014
what if you aren't allowed to use any string variables, string related function, digitrevorder() and fliplr()??
  1 comentario
Andrew Reibold
Andrew Reibold el 21 de Nov. de 2014
Then you can do divide by 10 tricks with rounding to save each digit, then rearrange after.

Iniciar sesión para comentar.


Kunal  Kabi
Kunal Kabi el 8 de Jun. de 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 el 6 de Sept. de 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 comentario
Walter Roberson
Walter Roberson el 6 de Sept. de 2022
This does not appear to be an answer to the question that was asked.

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by