Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <sstream>
- #include <math.h>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- string d2b(int num)
- {
- int num2=1,num3=num,place=0;
- while(num2<=num)
- {
- num2*=2;
- place++;
- }
- num2/=2;
- string result="";
- for(int c=0;c<place;c++)
- {
- num3-=num2;
- if(num3>-1)result+='1';
- else if(num3<=-1)
- {
- result+='0';
- num3+=num2;
- }
- num2/=2;
- }
- return result;
- }
- int b2d(int num)
- {
- stringstream convert;
- convert<<num;
- string numStr=convert.str();
- int len=numStr.length()-1;
- int num2=pow(2,len);
- int result=0;
- for(int c=0;c<len+1;c++)
- {
- if(numStr[c]=='1')result+=num2;
- num2/=2;
- }
- return result;
- }
- string d2h(float num)
- {
- string letters="ABCDEF", result;
- while(num!=0)
- {
- num/=16;
- stringstream convert;
- convert<<num;
- string numStr=convert.str();
- string remainderStr=numStr.substr(numStr.find('.')+1,numStr.length()-2);
- remainderStr="0."+remainderStr;
- stringstream convert2(remainderStr);
- float remainder;
- convert2>>remainder;
- int mult=remainder*16;
- bool number=false;
- for(int c=0;c<10;c++)if(mult==c)
- {
- stringstream convert3;
- convert3<<mult;
- result+=convert3.str();
- number=true;
- }
- if(number==false)for(int c=10;c<16;c++)if(mult==c)result+=(letters[c-10]);
- num=floor(num);
- }
- reverse(result.begin(),result.end());
- return result;
- }
- int h2d(string num)
- {
- string letters="ABCDEF";
- stringstream convert;
- convert<<num;
- string numStr=convert.str();
- int len=numStr.length();
- int mult=1;
- int result=0;
- for(int c=0;c<len-1;c++)mult*=16;
- for(int c=0;c<len;c++)
- {
- bool number=false;
- int temp, temp2;
- for(int x=49;x<58;x++)if(num[c]==x)
- {
- temp=(x-48);
- number=true;
- }
- if(number==false)for(int x=0;x<6;x++)if(num[c]==letters[x])temp2=(int)letters[x]-55;
- if(number==true)
- {
- temp*=mult;
- result+=temp;
- }
- if(number==false)
- {
- temp2*=mult;
- result+=temp2;
- }
- mult/=16;
- }
- return result;
- }
- int main()
- {
- int num, choice=0;
- string numStr;
- float numFlt;
- while(choice<1||choice>4)
- {
- cout<<"1) Convert Decimal to Binary"<<endl;
- cout<<"2) Convert Binary to Decimal"<<endl;
- cout<<"3) Convert Decimal to Hexadecimal"<<endl;
- cout<<"4) Convert Hexadecimal to Decimal"<<endl;
- cin>>choice;
- if(choice==1)
- {
- cout<<"Number: ";
- cin>>num;
- cout<<num<<" in binary is: "<<d2b(num);
- }
- else if(choice==2)
- {
- cout<<"Number: ";
- cin>>num;
- cout<<num<<" in decimal is: "<<b2d(num);
- }
- else if(choice==3)
- {
- cout<<"Number: ";
- cin>>numFlt;
- cout<<numFlt<<" in hexadecimal is: "<<d2h(numFlt);
- }
- else if(choice==4)
- {
- cout<<"Number: ";
- cin>>numStr;
- cout<<numStr<<" in decimal is: "<<h2d(numStr);
- }
- else
- {
- cout<<"Invalid choice!";
- Sleep(2000);
- system("cls");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement