VasilM

1a_decimal_number

Dec 8th, 2012
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.     string Num;
  9.     int brSys;
  10.  
  11.     while ( cin >> brSys >> Num ) {
  12.        
  13.         int st = Num.length()-1, decimalNum = 0, i=0;
  14.  
  15.         switch (brSys) {
  16.         case 2: for ( i; i<Num.length(); i++ )
  17.                     decimalNum += ( Num[i] == '1' ? 1 : 0 ) * pow( 2. , st-i ); break;
  18.         case 8:
  19.             for( i; i<Num.length(); i++ ) {
  20.                 switch (Num[i]) {
  21.                 case '0': break;
  22.                 case '1': decimalNum += 1 * pow( 8., st-i ); break;
  23.                 case '2': decimalNum += 2 * pow( 8., st-i ); break;
  24.                 case '3': decimalNum += 3 * pow( 8., st-i ); break;
  25.                 case '4': decimalNum += 4 * pow( 8., st-i ); break;
  26.                 case '5': decimalNum += 5 * pow( 8., st-i ); break;
  27.                 case '6': decimalNum += 6 * pow( 8., st-i ); break;
  28.                 case '7': decimalNum += 7 * pow( 8., st-i ); break;
  29.                 }
  30.             } break;
  31.         case 16:
  32.             for( i; i<Num.length(); i++ ) {
  33.                 switch (Num[i]) {
  34.                 case '0': break;
  35.                 case '1': decimalNum += 1 * pow( 16., st-i ); break;
  36.                 case '2': decimalNum += 2 * pow( 16., st-i ); break;
  37.                 case '3': decimalNum += 3 * pow( 16., st-i ); break;
  38.                 case '4': decimalNum += 4 * pow( 16., st-i ); break;
  39.                 case '5': decimalNum += 5 * pow( 16., st-i ); break;
  40.                 case '6': decimalNum += 6 * pow( 16., st-i ); break;
  41.                 case '7': decimalNum += 7 * pow( 16., st-i ); break;
  42.                 case '8': decimalNum += 8 * pow( 16., st-i ); break;
  43.                 case '9': decimalNum += 9 * pow( 16., st-i ); break;
  44.                 case 'A': decimalNum += 10 * pow( 16., st-i ); break;
  45.                 case 'B': decimalNum += 11 * pow( 16., st-i ); break;
  46.                 case 'C': decimalNum += 12 * pow( 16., st-i ); break;
  47.                 case 'D': decimalNum += 13 * pow( 16., st-i ); break;
  48.                 case 'E': decimalNum += 14 * pow( 16., st-i ); break;
  49.                 case 'F': decimalNum += 15 * pow( 16., st-i ); break;
  50.                 }
  51.             } break;
  52.         default: cout << "wrong entry data!!!\n";
  53.         }
  54.         cout << decimalNum << endl;
  55.     }
  56.     return 0;
  57. }
  58. /*
  59. Задачи за тренинг (2012/2013)
  60.  
  61. Задача 1а. Да се напише програма за превръщане на естествено число от запис в двоична, осмична и шестнадесетична бройни системи в запис в десетична бройна система.
  62.  
  63. Вход:
  64. На стандартния вход се задава редица от двойки числа (примери), като всяка двойка е на отделен ред. Първото число от двойката е основата на бройната система и може да бъде 2, 8 или 16, в която е записано второто число, което е по-малко от 106.
  65.  
  66. Изход:
  67. За всеки пример (двойка числа) от входа се извежда едно число на отделен ред - записа на второто число в десетична бройна система.
  68.  
  69. Пример:
  70. 2 1111
  71. 16  F
  72. 8 1
  73.  
  74. Решение на примера:
  75. 15
  76. 15
  77. 1
  78. */
Advertisement
Add Comment
Please, Sign In to add comment