SHARE
TWEET

Перевод из двоичной СС в десятиричную

DeD_M1sha Apr 23rd, 2019 (edited) 65 in 333 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cmath>
  3. #include <cstring>
  4. #include <sstream>
  5.  
  6. using namespace std;
  7.  
  8. int main (void) {
  9.    
  10.     string BinaryStroke = "\0"; // BinaryStroke - это исходная строка, которую вводит пользователь
  11.     int BinaryNumber = 0; // BinaryNumber - это исходное двоичное число
  12.     int Base = 2; // Base - система счисления
  13.     int Counter = 0; // счетчик
  14.     int Result = 0; // результат
  15.     int Temp = 0; // промежуточное значение
  16.     bool Check = false; // булевая переменная для проверки на ввод
  17.    
  18.     cout << "Данная программа переводит число из двоичной системы счисления в десятиричную\n\n";
  19.    
  20.     while (true) { // запуск бесконечного цикла с единственным условием завершения
  21.        
  22.         cout << "Введите двоичное число: ";
  23.         cin >> BinaryStroke;
  24.        
  25.             for (unsigned short int i = 0; i < BinaryStroke.length(); i++) {
  26.                
  27.                 if (BinaryStroke[i] != '0' && BinaryStroke[i] != '1') {
  28.                    
  29.                     Check = true;
  30.                     break;
  31.                    
  32.                 }
  33.                
  34.             } // проверка строки BinaryStroke на наличие посторонних символов, помимо 0 и 1
  35.        
  36.             if (Check == false)
  37.                 break; // если лишних символов нет - пропускаем пользователя дальше
  38.                
  39.             else {
  40.                
  41.                 cout << "\nЗапрещено вводить любые другие символы, кроме \"0\" и \"1\"\n\n";
  42.                 Check = false;
  43.                
  44.             } // если лишние символы есть - сообщаем о запрете на ввод лишнего, и продолжаем бесконечный цикл на ввод дальше
  45.        
  46.     } // защита от дурака
  47.    
  48.     istringstream String_To_Int (BinaryStroke); // инициализация метода по переводу значения из строки в число
  49.     String_To_Int >> BinaryNumber; // конвертация строки BinaryStroke в целое число BinaryNumber
  50.    
  51.     do {
  52.        
  53.         Temp = BinaryNumber % 10; // вычисляем остаток от деления на 10
  54.         Result += pow (Base, Counter) * Temp; // возводим систему счисления в степень счетчика, и умножаем на промежуточное значение Temp
  55.         Counter++; // увеличиваем счетчик на единицу
  56.         BinaryNumber /= 10; // сокращаем наше двоичное число на 1 символ
  57.        
  58.     } while (BinaryNumber); // цикл до тех пор, пока не останется цифр совсем (0 не равно true)
  59.    
  60.     cout << "\nПолучившееся десятиричное число: " << Result << "\n";
  61.    
  62.     return 0; // завершение программы
  63. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top