Advertisement
Lixard

Lab4

Mar 15th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     setlocale(0, "");
  10.     cout << "\
  11. 1. Перевод из двоичного числа в десятичное \n\
  12. 2. Перевод из шестнадцатеричного числа в десятичное \n\
  13. 3. Перевод из десятичного числа в двоичное \n\
  14. 4. Перевод из десятичного числа в шестнадцатеричное\n";
  15.         while (true)
  16.         {
  17.             int option;
  18.             cout << "Выберите действие: ";
  19.             cin >> option;
  20.             switch (option)
  21.             {
  22.             case 1:
  23.             {
  24.                 int number;
  25.                 int conc = 0;
  26.                 int i = 0;
  27.                 cout << "Введите число для преобразования из 2-ичной в 10-тиричную: ";
  28.                 cin >> number;
  29.                 while (number)
  30.                 {
  31.                     if (number % 2)
  32.                     {
  33.                         conc += pow(2, i);
  34.                     }
  35.                     number /= 10;
  36.                     i++;
  37.                 }
  38.                 cout << "Преобразованное число: " << conc << endl;
  39.                 break;
  40.             }
  41.             case 2:
  42.             {
  43.                 string str;
  44.                 int a;
  45.                 int conc = 0;
  46.                 cout << "Введите число для преобразования из 16-тиричной в 10-тиричную: ";
  47.                 cin >> str;
  48.                 int p = str.length() - 1;
  49.                 for (int i = 0; i < str.length(); i++)
  50.                 {
  51.                     switch (toupper(str[i]))
  52.                     {
  53.                     case 'A': a = 10; break;
  54.                     case 'B': a = 11; break;
  55.                     case 'C': a = 12; break;
  56.                     case 'D': a = 13; break;
  57.                     case 'E': a = 14; break;
  58.                     case 'F': a = 15; break;
  59.                     case '1': a = 1; break;
  60.                     case '2': a = 2; break;
  61.                     case '3': a = 3; break;
  62.                     case '4': a = 4; break;
  63.                     case '5': a = 5; break;
  64.                     case '6': a = 6; break;
  65.                     case '7': a = 7; break;
  66.                     case '8': a = 8; break;
  67.                     case '9': a = 9; break;
  68.                     case '0': a = 0; break;
  69.                     }
  70.                     conc += a * pow(16, p);
  71.                     p--;
  72.                 }
  73.                 cout << "Преобразованное число: " << conc << endl;
  74.                 break;
  75.             }
  76.             case 3:
  77.             {
  78.                 string str;
  79.                 int number;
  80.                 cout << "Введите число для преобразования из 10-тиричной в 2-ичную: ";
  81.                 cin >> number;
  82.                 while (number)
  83.                 {
  84.                     if (number % 2 == 0)
  85.                     {
  86.                         number /= 2;
  87.                         str += '0';
  88.                     }
  89.                     else if (number % 2)
  90.                     {
  91.                         number /= 2;
  92.                         str += '1';
  93.                     }
  94.                 }
  95.                 reverse(str.begin(), str.end());
  96.                 cout << "Преобразованное число: " << str << endl;
  97.                 break;
  98.             }
  99.             case 4:
  100.             {
  101.                 string str;
  102.                 int number;
  103.                 int i = 0;
  104.                 cout << "Введите число для преобразования из 10-тиричной в 16-тиричную: ";
  105.                 cin >> number;
  106.                 while (number)
  107.                 {
  108.                     i = number % 16;
  109.                     switch (i)
  110.                     {
  111.                     case 10: str += 'A'; break;
  112.                     case 11: str += 'B'; break;
  113.                     case 12: str += 'C'; break;
  114.                     case 13: str += 'D'; break;
  115.                     case 14: str += 'E'; break;
  116.                     case 15: str += 'F'; break;
  117.                     case 16: str += to_string(10); break;
  118.                     default: str += to_string(i); break;
  119.                     }
  120.                     number /= 16;
  121.                 }
  122.                 reverse(str.begin(), str.end());
  123.                 cout << "Преобразованное число: " << str << endl;
  124.                 break;
  125.             }
  126.             }
  127.         }
  128.     system("PAUSE");
  129.     return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement