⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convert.cpp

📁 C++实践源码
💻 CPP
字号:
///////////////////////////////////////////////////////////
//  Module  : convert.cpp
//
//  Purpose : Converts numbers from decimal (base 10) to 
//            some number base (2-10).
///////////////////////////////////////////////////////////

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

///////////////////////////////////////////////////////////
// Function Declarations

string Convert(const int& num, const int& newbase);
string ReverseStr(const string& str);

///////////////////////////////////////////////////////////
// Convert()

string Convert(const int& num, const int& newbase)
{
   string str;
   char   ch;
   int    remainder = 0;
   int    quotient  = num;

   while (quotient > 0)
   {
      remainder = quotient % newbase;
      quotient  = quotient / newbase;

      // Convert remainder to a char and add it to string
      itoa(remainder, &ch, 10);
      str += ch;
   };

   // Because the bits in the number are converted from 
   // low to high, we must reverse it to get the proper 
   // order.

   str = ReverseStr(str);   
   return str;
}

///////////////////////////////////////////////////////////
// ReverseStr()

string ReverseStr(const string& s1)
{
   string str = s1;
   
   // Use pointer arithmetic to reverse the string

   int  last = str.size();   // Number of chars in string
   char *s   = &str[0];      // Get pointer to start char
   char *e   = &str[last-1]; // Get pointer to end char
   char temp;

   do 
   {
      // Swap outer digits
      temp = *s;  // temp = start
      *s = *e;    // start = end
      *e = temp;  // end = temp  
      
      // Move inward, into the string from both ends
      ++s;         
      --e;
   } 
   while (s < e);   // repeat until midpoint

   return str;
}

///////////////////////////////////////////////////////////
// Driver

void main()
{
   int  num;
   int  base;
   char quit;

   do
   {
      do
      {
         cout << "In what base shall we work work "
            << "(2-10)? >";
         cin >> base;         
      }
      while ((base < 2) || (base > 10));

      do
      {
         cout << "Enter a positive decimal integer "
            << "for conversion >";
         cin >> num;   
      }
      while (num < 0);

      // Convert bases
      string answer = Convert(num, base);

      // Write output
      cout << num << " = " << answer << " in base " 
         << base << endl;
      cout << endl;
   
      // See if the user wants to continue or quit
      cout << "Enter Q to quit, C to continue >";
      cin >> quit;
      cout << endl;
   }
   while ((quit != 'Q') && (quit != 'q'));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -