How to reverse a number

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

Antworten (8)

Azzi Abdelmalek
Azzi Abdelmalek am 1 Dez. 2012
Bearbeitet: Azzi Abdelmalek am 1 Dez. 2012

6 Stimmen

a=8549
out=str2num(fliplr(num2str(a)))

3 Kommentare

Aritra Chatterjee
Aritra Chatterjee am 14 Sep. 2013
Great!!! Great!!!!
János Stenszky
János Stenszky am 14 Mai 2018
Thanks!
Uchechukwu Obimma
Uchechukwu Obimma am 11 Mai 2020
Thanks

Melden Sie sich an, um zu kommentieren.

Roger Stafford
Roger Stafford am 21 Nov. 2014

3 Stimmen

@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 Kommentare

Kunal  Kabi
Kunal Kabi am 8 Jun. 2017
Thank you sir because of you i got the idea @RogerStafford.
ABHAS BHATIA
ABHAS BHATIA am 14 Jan. 2018
Thanks for the solution @Jessica

Melden Sie sich an, um zu kommentieren.

Kunal  Kabi
Kunal Kabi am 8 Jun. 2017
Bearbeitet: Jan am 28 Aug. 2019

2 Stimmen

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 am 14 Jan. 2018
Bearbeitet: Jan am 14 Jan. 2018

1 Stimme

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 am 1 Dez. 2012

0 Stimmen

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 am 21 Nov. 2014

0 Stimmen

what if you aren't allowed to use any string variables, string related function, digitrevorder() and fliplr()??

1 Kommentar

Andrew Reibold
Andrew Reibold am 21 Nov. 2014
Then you can do divide by 10 tricks with rounding to save each digit, then rearrange after.

Melden Sie sich an, um zu kommentieren.

Kunal  Kabi
Kunal Kabi am 8 Jun. 2017

0 Stimmen

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 am 6 Sep. 2022

0 Stimmen

  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 Kommentar

Walter Roberson
Walter Roberson am 6 Sep. 2022
This does not appear to be an answer to the question that was asked.

Melden Sie sich an, um zu kommentieren.

Kategorien

Produkte

Gefragt:

am 1 Dez. 2012

Kommentiert:

am 6 Sep. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by