Click here to Skip to main content
15,356,641 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I want to reverse 8970 as 0798 and
0987 as 7890
-987 as -789
the problem I'm getting is with second and third case.

What I have tried:

#include<iostream>
#include <string>
using namespace std;

    int reverseDigits(int num)
    {
        string strin=to_string(num);   //covert integer to char to print zero.
        reverse(strin.begin(), strin.end());
        num=stoi(strin);
        cout<<"Reverse of num entered: ";
        for(char p:strin){
            cout<<p;
        }

        return 0;
    }

int main(){
    int num;
    cout<<"Enter a number : ";
    cin>>num;
    reverseDigits(num);
    cout<<endl<<endl;
    cout<<code by vksssd;
    return 0;
}
Posted
Updated 16-Nov-21 20:12pm
v3

You can reverse a number without converting tit to a string: if you take the log base 10 of a number, the integer part is the number of digits in the number minus one: C library function - log10()[^] This gives you a for loop :
C++
int digits = (int) log10(num) + 1;
for (int i = 0; i < digits; i++)
   {
   ...
   }
Inside the loop, you can extract the least significant digit using the modulus operator, and prepare the number for the next time round the loop by dividing it by ten.

Give it a try, it's quick, efficient, and easy to code!
   
Quote:
How to reverse digits of number in cpp?

Do not use integer, use string. With integers, any input with leading 0 will fail.
Treat the problem like text. Like "code" => "edoc".
   

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900