|
i want to write a program to convert binary , octan or hexadecimal number to decimal ... i wrote it if its binary or octal and it was easy because its just numbers but in hexadecimal i have to work with numbers and letters which mean i have to use string ... and the main problem with the string how can i deal with each digit if its a string ? its easy if its number to get each digit alone by using mod and division ... but if they are letters i cant divide or use the mod ...
here is my work :
#include<iostream> #include<cmath> #include<string> using namespace std; int main()
{ int base,num,numC=0,counterC=0;
cout<<"please enter the base of the number you want to convert : "; cin>>base; cout<<endl;
switch(base) {
case 2:
cout<<"Enter a number in the binary base : "; cin>>num;
while(num>0) {
switch(num%10) {
case 0: numC+=0; case 1:numC+=pow(base,counterC);
}
num=num/10; counterC++; }
cout<<"The number in the decimal is : "<<numC<<endl<<endl;
break;
case 8:
cout<<"Enter a number in the octal base : "; cin>>num;
while(num>0) {
switch(num%10) {
case 0:numC+=0; case 1:numC+=pow(base,counterC); case 2:numC+=2*pow(base,counterC); case 3:numC+=3*pow(base,counterC); case 4:numC+=4*pow(base,counterC); case 5:numC+=5*pow(base,counterC); case 6:numC+=6*pow(base,counterC); case 7:numC+=7*pow(base,counterC);
}
num=num/10; counterC++;
}
cout<<"The number in the decimal is : "<<numC<<endl<<endl;
break;
case 16:
cout<<"Enter a number in the hexadecimal base : "; cin>>num;
switch(num) { case 0:numC+=0; case 1:numC+=pow(base,counterC); case 2:numC+=2*pow(base,counterC); case 3:numC+=3*pow(base,counterC); case 4:numC+=4*pow(base,counterC); case 5:numC+=5*pow(base,counterC); case 6:numC+=6*pow(base,counterC); case 7:numC+=7*pow(base,counterC); case 8:numC+=8*pow(base,counterC); case 9:numC+=9*pow(base,counterC); case 'A':case 'a':numC+=10*pow(base,counterC); case 'B':case 'b':numC+=11*pow(base,counterC); case 'C':case 'c':numC+=12*pow(base,counterC); case 'D':case 'd':numC+=13*pow(base,counterC); case 'E':case 'e':numC+=14*pow(base,counterC); case 'F':case 'f':numC+=15*pow(base,counterC); }
break;
default: cout<<"sorry invalid base"<<endl<<endl;
}
return 0; }
its too long maybe its possible to write it shorter but you know i am just a beginner in the programming world ...
|