Системы счисления,оператор switch
и вызов функций(передача управления).
Хочу представить вашему вниманию результат свободного времени и шила в ж... кхм... Прошу прощения результат 15 минут работы. Это простенький конвертер систем счисления. Нужно всего лишь ввести систему счисления из которой переводите и систему счисления в которую переводите,а затем число которое нужно перевести,остальное программа сделает сама. Данная программа является хорошим наглядным примером использования оператора switch
, return
, а также вызова функций из функций и передачи управления. Прошу не кидаться гнилыми помидорами, у меня от них живот болит, кидайтесь яйцами, давно хотел начать качаться XD
Всем радости и сладости
=^_^=
Покажи мне код!!!
#include <bits/stdc++.h>
#define ll long long
using namespace std;
////////////////////////////////////////////////////
//////////////////bin_to////////////////////////////
////////////////////////////////////////////////////
string bin_to_oct(string a)
{
string b="";
reverse(a.begin(),a.end());
while(a.size()%3!=0)
{
a+='0';
}
for(int i=0;i<a.size();i+=3)
{
int t=0;
t+=((int)a[i]-(int)'0')*1;
t+=((int)a[i+1]-(int)'0')*2;
t+=((int)a[i+2]-(int)'0')*4;
b+='0'+t;
}
reverse(b.begin(),b.end());
return b;
}
string bin_to_dec(string a)
{
string b="";
reverse(a.begin(),a.end());
int t=0;
for(int i=0;i<a.size();i++)
{
t+=((int)a[i]-(int)'0')*pow(2,i);
}
while(t>0)
{
b+='0'+(t%10);
t/=10;
}
reverse(b.begin(),b.end());
return b;
}
string bin_to_hex(string a)
{
string b="";
reverse(a.begin(),a.end());
while(a.size()%4!=0)
{
a+='0';
}
for(int i=0;i<a.size();i+=4)
{
int t=0;
t+=((int)a[i]-(int)'0')*1;
t+=((int)a[i+1]-(int)'0')*2;
t+=((int)a[i+2]-(int)'0')*4;
t+=((int)a[i+3]-(int)'0')*8;
if(t==15)b+='F';
else if(t==14)b+='E';
else if(t==13)b+='D';
else if(t==12)b+='C';
else if(t==11)b+='B';
else if(t==10)b+='A';
else b+='0'+t;
}
reverse(b.begin(),b.end());
return b;
}
////////////////////////////////////////////////////
//////////////////oct_to////////////////////////////
////////////////////////////////////////////////////
string oct_to_bin(string a)
{
string b="";
reverse(a.begin(),a.end());
for(int i=0;i<a.size();i++)
{
if(a[i]=='0')b+="000";
else if(a[i]=='1')b+="100";
else if(a[i]=='2')b+="010";
else if(a[i]=='3')b+="110";
else if(a[i]=='4')b+="001";
else if(a[i]=='5')b+="101";
else if(a[i]=='6')b+="011";
else if(a[i]=='7')b+="111";
}
reverse(b.begin(),b.end());
return b;
}
string oct_to_dec(string a)
{
return bin_to_dec(oct_to_bin(a));
}
string oct_to_hex(string a)
{
return bin_to_hex(oct_to_bin(a));
}
////////////////////////////////////////////////////
//////////////////dec_to////////////////////////////
////////////////////////////////////////////////////
string dec_to_bin(string a)
{
string b="";
int t=atoi(a.c_str());
while(t!=0)
{
b+='0'+t%2;
t/=2;
}
reverse (b.begin(),b.end());
return b;
}
string dec_to_oct(string a)
{
return bin_to_oct(dec_to_bin(a));
}
string dec_to_hex(string a)
{
return bin_to_hex(dec_to_bin(a));
}
////////////////////////////////////////////////////
//////////////////hex_to////////////////////////////
////////////////////////////////////////////////////
string hex_to_bin(string a)
{
string b="";
reverse(a.begin(),a.end());
for(int i=0;i<a.size();i++)
{
if(a[i]=='0')b+="0000";
else if(a[i]=='1')b+="1000";
else if(a[i]=='2')b+="0100";
else if(a[i]=='3')b+="1100";
else if(a[i]=='4')b+="0010";
else if(a[i]=='5')b+="1010";
else if(a[i]=='6')b+="0110";
else if(a[i]=='7')b+="1110";
else if(a[i]=='8')b+="0001";
else if(a[i]=='9')b+="1001";
else if(a[i]=='A')b+="0101";
else if(a[i]=='B')b+="1101";
else if(a[i]=='C')b+="0011";
else if(a[i]=='D')b+="1011";
else if(a[i]=='E')b+="0111";
else if(a[i]=='F')b+="1111";
}
reverse(b.begin(),b.end());
return b;
}
string hex_to_oct(string a)
{
return bin_to_oct(hex_to_bin(a));
}
string hex_to_dec(string a)
{
return bin_to_dec(hex_to_bin(a));
}
////////////////////////////////////////////////////
////////////////////////////////////////////////////
////////////////////////////////////////////////////
int main()
{
int from,to;
cin>>from>>to;
string a,b;
cin>>a;
b="";
switch(from)
{
case 2:
{
switch(to)
{
case 8:{b=bin_to_oct(a);}break;
case 10:{b=bin_to_dec(a);}break;
case 16:{b=bin_to_hex(a);}break;
}
}break;
case 8:
{
switch(to)
{
case 2:{b=oct_to_bin(a);}break;
case 10:{b=oct_to_dec(a);}break;
case 16:{b=oct_to_hex(a);}break;
}
}break;
case 10:
{
switch(to)
{
case 2:{b=dec_to_bin(a);}break;
case 8:{b=dec_to_oct(a);}break;
case 16:{b=dec_to_hex(a);}break;
}
}break;
case 16:
{
switch(to)
{
case 2:{b=hex_to_bin(a);}break;
case 8:{b=hex_to_oct(a);}break;
case 10:{b=hex_to_dec(a);}break;
}
}break;
}
cout<<b;
}