Hi, I have a program problem with converting decimals to binary and back again. My teacher said that the program is to be like a menu and convert decimals or binary from the user's input. This is part of my code:

``````#include <iostream>
#include <string>

using namespace std;

void binary(int number) {
int remainder;
if(number <= 1)
cout << number;
remainder = number % 2;
binary(number >> 1);
cout << remainder;
}

int main(){

int number;
int choice;

cout << "1. Binary to Decimal\n";
cout << "2. Decimal to Binary\n";
cout << "3. Quit Program\n";
cout << "Enter your Choice: ";
cin >> choice;

switch (choice) {

case '1':
cout << "Please enter an integer: ";
cin >> number;
if (number < 0)
cout << "Error enter positive integer: ";
else {
cout << "The number in Binary is: ";
binary(number);
cout << endl;
}

}
system("pause");
return 0;
}``````

I know my problem is with the binary(int number) function because it is runnable but dosen't call to the function. So, my question is how can I modify this to run correctly? Also, how would I go about reversing the code to have it convert binary to decimal?

## All 5 Replies

Nice thought to use the recursive function...

recursive function should have the terminating point which in the conversion always turn to 1 at last.

``````void binary(int num)
{
if(num!=1)
{
int rem=num%2;
binary(num/2);
cout<<rem;
}
else
cout<<num;
}``````

Thanks Rohitman. So, How do I reverse it as in binary to decimal? I know it has something to do with diffrent powers of a number like 2x^i. So, do I use a for loop for that or something else?

1 = 1
10 = 2
100 = 4
1000 = 8

You can solve this in more than one way, well I can think of multiple ways atleast ^^
Hope this helps

Thanks Rohitman. So, How do I reverse it as in binary to decimal? I know it has something to do with diffrent powers of a number like 2x^i. So, do I use a for loop for that or something else?

yes, you have to do some thing like that only. It your wish to use the recursive function or not but I don't recommend to use the recursive function in this case and earlier one too.

In any number system is represented by the general expression
a[n]*r^[n] + a[n-1]*r^[n-1] +........+ a[2]*r^[2] + a[1]*r^[1]+a[0] //integer part
+ a[-1]*r^[-1] + + a[-1]*r^[-2].......+ a[-m]*r^[-m] //fraction part

where,
a[j] is the coefficient