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?

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
r is radix or base

For decimal no system r = 10; and coefficient can have the value from 0-9

Similarly the binary no system base will be 2, and can have only 2 values 0 and 1.

I guess concept would be clear...
best of luck for programming..

Thanks, I think I got it. I finally got additional help from one of my friends in class.

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.