#include <iostream>
#include <cmath>
using namespace std;
// Отображение шестнадцатеричной цифры
char digit( int num)
{
switch ( num) {
case 0 : return '0' ;
case 1 : return '1' ;
case 2 : return '2' ;
case 3 : return '3' ;
case 4 : return '4' ;
case 5 : return '5' ;
case 6 : return '6' ;
case 7 : return '7' ;
case 8 : return '8' ;
case 9 : return '9' ;
case 10 : return 'A' ;
case 11 : return 'B' ;
case 12 : return 'C' ;
case 13 : return 'D' ;
case 14 : return 'E' ;
case 15 : return 'F' ;
}
}
// Получение целой части числа
int dectox_int( int a, int p, char * s)
{
int num = ( int ) a;
int rest = num % p;
num / = p;
if ( num == 0 )
{
s[ 0 ] = digit( rest) ; return 1 ;
}
int k = dectox_int( num, p, s) ;
s[ k++ ] = digit( rest) ;
return k;
}
// Получение дробной части числа
void dectox_double( double a, int p, char * s)
{
int iter = 0 ;
int k = 0 ;
double a1 = a;
do {
a1 = a1 * p;
int num = ( int ) ( a1) ;
s[ k++ ] = digit( num) ;
a1 - = ( int ) a1;
iter++ ;
} while ( a1 > 0.00000001 && iter < 10 ) ;
s[ k] = '\0 ' ;
}
int main( )
{
string str;
long long l, N;
bool o;
cout << "1<==Перевод в любую систему счисления из десятичной" << endl;
cout << "2<==Перевод из двоичной системы счисления в десятичную" << endl;
cout << "3<==Перевод из восьмеричной системы счисления в десятичную" << endl;
cout << "4<==Перевод из шестнадцатеричной системы счисления в десятичную" << endl;
int z;
cin >> z;
if ( z== 1 ) {
double a;
char s[ 80 ] = { 0 } ;
int p;
system ( "chcp 1251" ) ;
system ( "cls" ) ;
cout << "Введите число: " ;
cin >> a;
cout << "Введите основание системы счисления: " ;
cin >> p;
int k = dectox_int( ( int ) a, p, s) ;
s[ k++ ] = ',' ;
dectox_double( a - ( int ) a, p, & s[ k] ) ;
cout << s;
cin .get ( ) ; cin .get ( ) ; } ///////////////////////////////////////////////////////////////////////////
//////////////////////////////////2nd part
else if ( z== 2 ) { int zf, c, t1, t2, t3, t4, t5;
printf ( "Vvedite dvoicnoe chislo:\n " ) ;
scanf ( "%d" , & zf) ;
t1= ( zf/ 10000 ) ;
t2= ( ( zf% 10000 ) / 1000 ) ;
t3= ( ( ( zf% 10000 ) % 1000 ) / 100 ) ;
t4= ( ( ( ( zf% 10000 ) % 1000 ) % 100 ) / 10 ) ;
t5= ( ( ( ( zf% 10000 ) % 1000 ) % 100 ) % 10 ) / 1 ;
if ( ( t1== 9 ) || ( t1== 2 ) || ( t1== 3 ) || ( t1== 4 ) || ( t1== 5 ) || ( t1== 6 ) || ( t1== 7 ) || ( t1== 8 ) || ( t2== 9 ) || ( t2== 2 ) || ( t2== 3 ) || ( t2== 4 ) || ( t2== 5 ) || ( t2== 6 ) || ( t2== 7 ) || ( t2== 8 ) || ( t3== 9 ) || ( t3== 2 ) || ( t3== 3 ) || ( t3== 4 ) || ( t3== 5 ) || ( t3== 6 ) || ( t3== 7 ) || ( t3== 8 ) || ( t4== 9 ) || ( t4== 2 ) || ( t4== 3 ) || ( t4== 4 ) || ( t4== 5 ) || ( t4== 6 ) || ( t4== 7 ) || ( t4== 8 ) || ( t5== 9 ) || ( t5== 2 ) || ( t5== 3 ) || ( t5== 4 ) || ( t5== 5 ) || ( t5== 6 ) || ( t5== 7 ) || ( t5== 8 ) )
{
printf ( "Error!!!\n " ) ;
}
else
{ c= t1* 16 + t2* 8 + t3* 4 + t4* 2 + t5* 1 ;
printf ( "Десятичное число %d" , c) ;
}
}
else if ( z== 3 ) {
cout << "Введите восьмеричное число:" << endl;
getline( cin , str) ;
if ( str[ 0 ] == '-' )
{
str.erase ( 0 , 1 ) ;
o = true ;
}
else
o = false ;
l = str.length ( ) ;
N = 0 ;
for ( int i = 0 ; i < l; i++ )
{
N + = ( str[ i] - '0' ) * pow ( 8 , l - i - 1 ) ;
}
if ( o)
N * = - 1 ;
cout << "Данное число в десятичной системе: " << N << endl;
cin .get ( ) ; }
else if ( z== 3 ) {
cout << "Введите Шестнадцатиричное ч число:" << endl;
getline( cin , str) ;
if ( str[ 0 ] == '-' )
{
str.erase ( 0 , 1 ) ;
o = true ;
}
else
o = false ;
l = str.length ( ) ;
N = 0 ;
for ( int i = 0 ; i < l; i++ )
{
N + = ( str[ i] - '0' ) * pow ( 16 , l - i - 1 ) ;
}
if ( o)
N * = - 1 ;
cout << "Данное число в десятичной системе: " << N << endl;
cin .get ( ) ; }
else
cout << "Error!!!" << endl;
return 0 ; }
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy8g0J7RgtC+0LHRgNCw0LbQtdC90LjQtSDRiNC10YHRgtC90LDQtNGG0LDRgtC10YDQuNGH0L3QvtC5INGG0LjRhNGA0YsKY2hhciBkaWdpdChpbnQgbnVtKQp7CiAgc3dpdGNoIChudW0pIHsKICBjYXNlIDA6IHJldHVybiAnMCc7CiAgY2FzZSAxOiByZXR1cm4gJzEnOwogIGNhc2UgMjogcmV0dXJuICcyJzsKICBjYXNlIDM6IHJldHVybiAnMyc7CiAgY2FzZSA0OiByZXR1cm4gJzQnOwogIGNhc2UgNTogcmV0dXJuICc1JzsKICBjYXNlIDY6IHJldHVybiAnNic7CiAgY2FzZSA3OiByZXR1cm4gJzcnOwogIGNhc2UgODogcmV0dXJuICc4JzsKICBjYXNlIDk6IHJldHVybiAnOSc7CiAgY2FzZSAxMDogcmV0dXJuICdBJzsKICBjYXNlIDExOiByZXR1cm4gJ0InOwogIGNhc2UgMTI6IHJldHVybiAnQyc7CiAgY2FzZSAxMzogcmV0dXJuICdEJzsKICBjYXNlIDE0OiByZXR1cm4gJ0UnOwogIGNhc2UgMTU6IHJldHVybiAnRic7CiAgfQp9Ci8vINCf0L7Qu9GD0YfQtdC90LjQtSDRhtC10LvQvtC5INGH0LDRgdGC0Lgg0YfQuNGB0LvQsAppbnQgZGVjdG94X2ludChpbnQgYSwgaW50IHAsIGNoYXIgKnMpCnsKICBpbnQgbnVtID0gKGludClhOwogIGludCByZXN0ID0gbnVtICUgcDsKICBudW0gLz0gcDsKICBpZiAobnVtID09IDApCiAgewogICAgc1swXSA9IGRpZ2l0KHJlc3QpOyByZXR1cm4gMTsKICB9CiAgaW50IGsgPSBkZWN0b3hfaW50KG51bSwgcCwgcyk7CiAgc1trKytdID0gZGlnaXQocmVzdCk7CiAgcmV0dXJuIGs7Cn0KLy8g0J/QvtC70YPRh9C10L3QuNC1INC00YDQvtCx0L3QvtC5INGH0LDRgdGC0Lgg0YfQuNGB0LvQsAp2b2lkIGRlY3RveF9kb3VibGUoZG91YmxlIGEsIGludCBwLCBjaGFyICpzKQp7CiAgaW50IGl0ZXIgPSAwOwogIGludCBrID0gMDsKICBkb3VibGUgYTEgPSBhOwogIGRvIHsKICAgIGExID0gYTEgKiBwOwogICAgaW50IG51bSA9IChpbnQpKGExKTsKICAgIHNbaysrXSA9IGRpZ2l0KG51bSk7CiAgICBhMSAtPSAoaW50KWExOwogICAgaXRlcisrOwogIH0gd2hpbGUgKGExID4gMC4wMDAwMDAwMSAmJiBpdGVyIDwgMTApOwogIHNba10gPSAnXDAnOwp9CmludCBtYWluKCkKewoJc3RyaW5nIHN0cjsKICAgIGxvbmcgbG9uZyBsLCBOOwogICAgYm9vbCBvOwpjb3V0IDw8ICIxPD090J/QtdGA0LXQstC+0LQg0LIg0LvRjtCx0YPRjiDRgdC40YHRgtC10LzRgyDRgdGH0LjRgdC70LXQvdC40Y8g0LjQtyDQtNC10YHRj9GC0LjRh9C90L7QuSIgPDwgZW5kbDsKY291dCA8PCAiMjw9PdCf0LXRgNC10LLQvtC0INC40Lcg0LTQstC+0LjRh9C90L7QuSDRgdC40YHRgtC10LzRiyDRgdGH0LjRgdC70LXQvdC40Y8g0LIg0LTQtdGB0Y/RgtC40YfQvdGD0Y4iIDw8IGVuZGw7CmNvdXQgPDwgIjM8PT3Qn9C10YDQtdCy0L7QtCDQuNC3INCy0L7RgdGM0LzQtdGA0LjRh9C90L7QuSDRgdC40YHRgtC10LzRiyDRgdGH0LjRgdC70LXQvdC40Y8g0LIg0LTQtdGB0Y/RgtC40YfQvdGD0Y4iIDw8IGVuZGw7CmNvdXQgPDwgIjQ8PT3Qn9C10YDQtdCy0L7QtCDQuNC3INGI0LXRgdGC0L3QsNC00YbQsNGC0LXRgNC40YfQvdC+0Lkg0YHQuNGB0YLQtdC80Ysg0YHRh9C40YHQu9C10L3QuNGPINCyINC00LXRgdGP0YLQuNGH0L3Rg9GOIiA8PCBlbmRsOwppbnQgejsKY2luID4+IHo7CmlmKHo9PTEpewogIGRvdWJsZSBhOwogIGNoYXIgc1s4MF0gPSB7IDAgfTsKICBpbnQgcDsKICBzeXN0ZW0oImNoY3AgMTI1MSIpOwogIHN5c3RlbSgiY2xzIik7CiAgY291dCA8PCAi0JLQstC10LTQuNGC0LUg0YfQuNGB0LvQvjogIjsKICBjaW4gPj4gYTsKICBjb3V0IDw8ICLQktCy0LXQtNC40YLQtSDQvtGB0L3QvtCy0LDQvdC40LUg0YHQuNGB0YLQtdC80Ysg0YHRh9C40YHQu9C10L3QuNGPOiAiOwogIGNpbiA+PiBwOwogIGludCBrID0gZGVjdG94X2ludCgoaW50KWEsIHAsIHMpOwogIHNbaysrXSA9ICcsJzsKICBkZWN0b3hfZG91YmxlKGEgLSAoaW50KWEsIHAsICZzW2tdKTsKICBjb3V0IDw8IHM7CiAgY2luLmdldCgpOyBjaW4uZ2V0KCk7fS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8ybmQgcGFydAogIGVsc2UgaWYoej09Mil7CSAgaW50IHpmLCBjLCB0MSwgdDIsIHQzLCB0NCwgdDU7CiAgICAgcHJpbnRmICgiVnZlZGl0ZSBkdm9pY25vZSBjaGlzbG86XG4iKTsKICAgICBzY2FuZigiJWQiLCAmemYpOwogICAgdDE9KHpmLzEwMDAwKTsKICAgIHQyPSgoemYlMTAwMDApLzEwMDApOwogICAgdDM9KCgoemYlMTAwMDApJTEwMDApLzEwMCk7CiAgICB0ND0oKCgoemYlMTAwMDApJTEwMDApJTEwMCkvMTApOwogICAgdDU9KCgoKHpmJTEwMDAwKSUxMDAwKSUxMDApJTEwKS8xOwogICAgIAogICAgaWYgKCAodDE9PTkpfHwodDE9PTIpfHwodDE9PTMpfHwodDE9PTQpfHwodDE9PTUpfHwodDE9PTYpfHwodDE9PTcpfHwodDE9PTgpIHx8ICh0Mj09OSl8fCh0Mj09Mil8fCh0Mj09Myl8fCh0Mj09NCl8fCh0Mj09NSl8fCh0Mj09Nil8fCh0Mj09Nyl8fCh0Mj09OCkgfHwgKHQzPT05KXx8KHQzPT0yKXx8KHQzPT0zKXx8KHQzPT00KXx8KHQzPT01KXx8KHQzPT02KXx8KHQzPT03KXx8KHQzPT04KSB8fCAodDQ9PTkpfHwodDQ9PTIpfHwodDQ9PTMpfHwodDQ9PTQpfHwodDQ9PTUpfHwodDQ9PTYpfHwodDQ9PTcpfHwodDQ9PTgpIHx8ICh0NT09OSl8fCh0NT09Mil8fCh0NT09Myl8fCh0NT09NCl8fCh0NT09NSl8fCh0NT09Nil8fCh0NT09Nyl8fCh0NT09OCkgKQogICAgewogICAgICAgIHByaW50ZiAoIkVycm9yISEhXG4iKTsKICAgIH0KICAgIGVsc2UKICAgIHsgICBjPSB0MSoxNit0Mio4K3QzKjQrdDQqMit0NSoxOwogICAgICAgIHByaW50Zigi0JTQtdGB0Y/RgtC40YfQvdC+0LUg0YfQuNGB0LvQviAlZCIsIGMpOwogICAgfQogICAgIAogICAgIAp9CmVsc2UgaWYgKHo9PTMpewogICAgY291dCA8PCAi0JLQstC10LTQuNGC0LUg0LLQvtGB0YzQvNC10YDQuNGH0L3QvtC1INGH0LjRgdC70L46IiA8PCBlbmRsOwogICAgZ2V0bGluZShjaW4sIHN0cik7CiAgICBpZiAoc3RyWzBdID09ICctJykKICAgIHsKICAgICAgICBzdHIuZXJhc2UoMCwgMSk7CiAgICAgICAgbyA9IHRydWU7CiAgICB9CiAgICBlbHNlCiAgICAgICAgbyA9IGZhbHNlOwogICAgbCA9IHN0ci5sZW5ndGgoKTsKICAgIE4gPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsOyBpKyspCiAgICB7CiAgICAgICAgTiArPSAoc3RyW2ldIC0gJzAnKSAqIHBvdyg4LCBsIC0gaSAtIDEpOwogICAgfQogICAgaWYgKG8pCiAgICAgICAgTiAqPSAtMTsKICAgIGNvdXQgPDwgItCU0LDQvdC90L7QtSDRh9C40YHQu9C+INCyINC00LXRgdGP0YLQuNGH0L3QvtC5INGB0LjRgdGC0LXQvNC1OiAiIDw8IE4gPDwgZW5kbDsKICAgIGNpbi5nZXQoKTt9CiAgICBlbHNlIGlmICh6PT0zKXsKICAgIAljb3V0IDw8ICLQktCy0LXQtNC40YLQtSDQqNC10YHRgtC90LDQtNGG0LDRgtC40YDQuNGH0L3QvtC1INGHINGH0LjRgdC70L46IiA8PCBlbmRsOwogICAgZ2V0bGluZShjaW4sIHN0cik7CiAgICBpZiAoc3RyWzBdID09ICctJykKICAgIHsKICAgICAgICBzdHIuZXJhc2UoMCwgMSk7CiAgICAgICAgbyA9IHRydWU7CiAgICB9CiAgICBlbHNlCiAgICAgICAgbyA9IGZhbHNlOwogICAgbCA9IHN0ci5sZW5ndGgoKTsKICAgIE4gPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsOyBpKyspCiAgICB7CiAgICAgICAgTiArPSAoc3RyW2ldIC0gJzAnKSAqIHBvdygxNiwgbCAtIGkgLSAxKTsKICAgIH0KICAgIGlmIChvKQogICAgICAgIE4gKj0gLTE7CiAgICBjb3V0IDw8ICLQlNCw0L3QvdC+0LUg0YfQuNGB0LvQviDQsiDQtNC10YHRj9GC0LjRh9C90L7QuSDRgdC40YHRgtC10LzQtTogIiA8PCBOIDw8IGVuZGw7CiAgICBjaW4uZ2V0KCk7fQogICAgZWxzZSAKICAgIGNvdXQgPDwgIkVycm9yISEhIiA8PCBlbmRsOwogIAogIHJldHVybiAwO30=