Hi ever one

i make a function that print the reverse integer e.g if we input 12345 it print 54321
but the problem is that when i use return b; it print 5 4 3 2 1 1 and when remove return b; then it prints 5 4 3 2 1 4469696 why it print 4469696 after 5 4 3 2 1 here is the code

``````//HEADER FILES
#include<iostream>
#include<conio.h>

using namespace std;

//START OF FUNCTION PROTOTYPE

int reverseDigit(int number);

//END OF FUNCTION PROTOTYPE

//START OF MAIN FUNCTION
int main ()
{

cout<<"ENTER ANY INTEGER IT WILL REVERSE THE INTEGER AND PRINT IT."<<endl;

cout<<"The reverse integer is = ";
cout<<reverseDigit(12345);
cout<<endl;

getch();
return 0;
}//END OF MAIN FUNCTION

//START OF FUNCTION BODY
int reverseDigit(int number)
{
int b ;
while(number > 0)
{

b=number%10;
number= number/10;

cout<<b<<"  ";

}

//return b;

}
//END OF FUNCTION BODY
``````

## All 3 Replies

I changed your reverseDigit() function so it will actually store the answer to a digit using / and % like you have.

The reason why you get an extra 1 at the end of the output when you keep return b is because you have it printing out in the function then returning the final value of b which is 1 in the case of 12345.

When you remove return b it still prints out 5 4 3 2 1 because of your print statements within the function but then it outputs a garbage number when you are printing the return value of the function. (it is garbage because you aren't returning anything)

You have two options.

Use the code that I posted below or change `cout << reverseDigit(12345) << endl;` to `reverseDigit(12345);` (remove the print statements)

``````#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;

int reverseDigit( int number );

int main()
{
int inpt;
cout << "ENTER ANY INTEGER IT WILL REVERSE THE INTEGER AND PRINT IT." << endl;
cin >> inpt;
cout << "The reverse integer is = ";
cout << reverseDigit(inpt) << endl;

return 0;
}

int reverseDigit( int number )
{
int b = 0;
int i = 0, n;

for( i = -1, n = number; n > 0; i++ )
n /= 10;

while( number > 0 )
{
b += (number%10)*pow(10,i);
number = number/10;
i--;
}
return b;
}``````

Another method would be to use a stringstream.

``````#include <sstream> //need these headers
#include <algorithm>

int reverseDigit2( int number )
{
string convert = "";
stringstream strm;
strm << number;
strm >> convert;
reverse(convert.begin(), convert.end());

return atoi(convert.c_str());
}``````

Thanks very much
i understand my mistake

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.