0

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?

3
Contributors
5
Replies
12
Views
9 Years
Discussion Span
Last Post by Gamergirl22
0

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;
}
0

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?

0

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

0

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..

0

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

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.