Advertisement
FaDaQ

Универсальный конвертер чисел C++(я только учусь :) )

Apr 14th, 2021
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.14 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4. using namespace std;
  5.  
  6. //функция для преобразования в шестнадцатиричные числа
  7. string decToHex(int num) {
  8.     string result;
  9.     int ukaz(0);
  10.     char hex_num[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
  11.     //в случае если заданное число отрицательное
  12.     if (num < 0) {
  13.         //выполняется инверсия битов заданного числа и добавляется единица так-как у данной операции есть погрешность в 1 бит
  14.     }
  15.  
  16.     //цикл с постусловием
  17.     do
  18.     {
  19.         ukaz = num % 16;
  20.         num /= 16;
  21.         result = hex_num[ukaz] + result;
  22.     }
  23.     while (num != 0);
  24.     //------------
  25.  
  26.     return(result);
  27. }
  28.  
  29.  
  30. //функция для преобразования в бинарные числа
  31. string decToBin(int num) {
  32.     string result;
  33.     int ukaz(0);
  34.     char bin_num[16] = { '0','1'};
  35.    
  36.  
  37.     //в случае если заданное число отрицательное
  38.     if (num < 0) {
  39.         //выполняется инверсия битов заданного числа и добавляется единица так-как у данной операции есть погрешность в 1 бит
  40.         num = ~num + 1;
  41.     }
  42.  
  43.     //цикл с постусловием
  44.     do
  45.     {
  46.         ukaz = num % 2;
  47.         num /= 2;
  48.         result = bin_num[ukaz] + result;
  49.     }     while (num != 0);
  50.     //------------
  51.  
  52.    
  53.     return result;
  54. }
  55.  
  56.  
  57. //функция для преобразования в восьмиричные числа
  58. string decToOctal(int num) {
  59.     string result;
  60.     int ukaz(0);
  61.     char bin_num[8] = { '0','1','2','3','4','5','6','7' };
  62.    
  63.     //в случае если заданное число отрицательное
  64.     if (num < 0) {
  65.         //выполняется инверсия битов заданного числа и добавляется единица так-как у данной операции есть погрешность в 1 бит
  66.     }
  67.  
  68.     //цикл с постусловием
  69.     do
  70.     {
  71.         ukaz = num % 8;
  72.         num /= 8;
  73.         result = bin_num[ukaz] + result;
  74.     } while (num != 0);
  75.     //------------
  76.  
  77.     return(result);
  78. }
  79.  
  80.  
  81. //функция для зацикливания программы
  82. int main_loop()
  83. {
  84.     setlocale(LC_ALL, "Russian");
  85.     cout << "Введите число: ";
  86.     int number;
  87.     cin >> number;
  88.  
  89.     //ветвление для завершения программы в случае ввода 0
  90.     if (number == 0) {
  91.         exit(1);
  92.     }
  93.  
  94.         cout << "В 16-тиричной системе: " << decToHex(number) << endl;
  95.         cout << "В 2-ой системе: " << decToBin(number) << endl;
  96.         cout << "В 8-миричной системе: " << decToOctal(number) << endl;
  97.         cout << endl << endl;
  98.     return 0;
  99. }
  100.  
  101. int main() {
  102.     while (true) {
  103.         main_loop();
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement