#### Problems with binary long handling

I made a binary decimal conversion menu which always take 0 for binary numbers

``````#include<iostream>
#include<cmath>
using namespace std;

int main()
{

int dec,ch,i;
long bin,temp;
do
{
dec=bin=i=ch=0;
cout<<"nnttMENUn1. Deciml to Binary numbern2. Binary to Decimal numbern3. Exitn";
cin>>ch;
switch(ch)
{
case 1: cout<<"Enter a decimal number: ";cin>>dec;
temp=dec;
while(dec)
{
bin+=(dec%2)*pow(10,i);
dec/=2;
i++;
}
cout<<temp<<" in decimal = "<<bin<<" in binary"<<endl;break;
case 2: cout<<"Enter a binary number: ";cin>>bin;
temp=bin;
while(bin)
{
dec+=(bin%10)*pow(2,i);
bin/=10;
i++;
}
cout<<temp<<" in binary = "<<dec<<" in decimal"<<endl;break;
case 3: break;
default:
cout<<"Invalid choice";
}
}while(ch!=3);
}
``````

When I select choice `1` and enter `23`, it gives `0` and when I enter `11001` in choice `2` it gives `0` and tells that I entered `0`.

Output:

``````

1. Deciml to Binary number
2. Binary to Decimal number
3. Exit
Enter a decimal number: 23
23 in decimal = 0 in binary

1. Deciml to Binary number
2. Binary to Decimal number
3. Exit
Enter a binary number: 11001
0 in binary = 0 in decimal