fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5. // Отображение шестнадцатеричной цифры
  6. char digit(int num)
  7. {
  8. switch (num) {
  9. case 0: return '0';
  10. case 1: return '1';
  11. case 2: return '2';
  12. case 3: return '3';
  13. case 4: return '4';
  14. case 5: return '5';
  15. case 6: return '6';
  16. case 7: return '7';
  17. case 8: return '8';
  18. case 9: return '9';
  19. case 10: return 'A';
  20. case 11: return 'B';
  21. case 12: return 'C';
  22. case 13: return 'D';
  23. case 14: return 'E';
  24. case 15: return 'F';
  25. }
  26. }
  27. // Получение целой части числа
  28. int dectox_int(int a, int p, char *s)
  29. {
  30. int num = (int)a;
  31. int rest = num % p;
  32. num /= p;
  33. if (num == 0)
  34. {
  35. s[0] = digit(rest); return 1;
  36. }
  37. int k = dectox_int(num, p, s);
  38. s[k++] = digit(rest);
  39. return k;
  40. }
  41. // Получение дробной части числа
  42. void dectox_double(double a, int p, char *s)
  43. {
  44. int iter = 0;
  45. int k = 0;
  46. double a1 = a;
  47. do {
  48. a1 = a1 * p;
  49. int num = (int)(a1);
  50. s[k++] = digit(num);
  51. a1 -= (int)a1;
  52. iter++;
  53. } while (a1 > 0.00000001 && iter < 10);
  54. s[k] = '\0';
  55. }
  56. int main()
  57. {
  58. string str;
  59. long long l, N;
  60. bool o;
  61. cout << "1<==Перевод в любую систему счисления из десятичной" << endl;
  62. cout << "2<==Перевод из двоичной системы счисления в десятичную" << endl;
  63. cout << "3<==Перевод из восьмеричной системы счисления в десятичную" << endl;
  64. cout << "4<==Перевод из шестнадцатеричной системы счисления в десятичную" << endl;
  65. int z;
  66. cin >> z;
  67. if(z==1){
  68. double a;
  69. char s[80] = { 0 };
  70. int p;
  71. system("chcp 1251");
  72. system("cls");
  73. cout << "Введите число: ";
  74. cin >> a;
  75. cout << "Введите основание системы счисления: ";
  76. cin >> p;
  77. int k = dectox_int((int)a, p, s);
  78. s[k++] = ',';
  79. dectox_double(a - (int)a, p, &s[k]);
  80. cout << s;
  81. cin.get(); cin.get();}///////////////////////////////////////////////////////////////////////////
  82. //////////////////////////////////2nd part
  83. else if(z==2){ int zf, c, t1, t2, t3, t4, t5;
  84. printf ("Vvedite dvoicnoe chislo:\n");
  85. scanf("%d", &zf);
  86. t1=(zf/10000);
  87. t2=((zf%10000)/1000);
  88. t3=(((zf%10000)%1000)/100);
  89. t4=((((zf%10000)%1000)%100)/10);
  90. t5=((((zf%10000)%1000)%100)%10)/1;
  91.  
  92. 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) )
  93. {
  94. printf ("Error!!!\n");
  95. }
  96. else
  97. { c= t1*16+t2*8+t3*4+t4*2+t5*1;
  98. printf("Десятичное число %d", c);
  99. }
  100.  
  101.  
  102. }
  103. else if (z==3){
  104. cout << "Введите восьмеричное число:" << endl;
  105. getline(cin, str);
  106. if (str[0] == '-')
  107. {
  108. str.erase(0, 1);
  109. o = true;
  110. }
  111. else
  112. o = false;
  113. l = str.length();
  114. N = 0;
  115. for (int i = 0; i < l; i++)
  116. {
  117. N += (str[i] - '0') * pow(8, l - i - 1);
  118. }
  119. if (o)
  120. N *= -1;
  121. cout << "Данное число в десятичной системе: " << N << endl;
  122. cin.get();}
  123. else if (z==3){
  124. cout << "Введите Шестнадцатиричное ч число:" << endl;
  125. getline(cin, str);
  126. if (str[0] == '-')
  127. {
  128. str.erase(0, 1);
  129. o = true;
  130. }
  131. else
  132. o = false;
  133. l = str.length();
  134. N = 0;
  135. for (int i = 0; i < l; i++)
  136. {
  137. N += (str[i] - '0') * pow(16, l - i - 1);
  138. }
  139. if (o)
  140. N *= -1;
  141. cout << "Данное число в десятичной системе: " << N << endl;
  142. cin.get();}
  143. else
  144. cout << "Error!!!" << endl;
  145.  
  146. return 0;}
Success #stdin #stdout 0s 15240KB
stdin
3 31
stdout
1<==Перевод в любую систему счисления из десятичной
2<==Перевод из двоичной системы счисления в десятичную
3<==Перевод из восьмеричной системы счисления в десятичную
4<==Перевод из шестнадцатеричной системы счисления в десятичную
Введите восьмеричное число:
Данное число в десятичной системе: -999