📌  相关文章
📜  程序在C / C++中格式化带有千位分隔符的数字

📅  最后修改于: 2021-04-24 05:09:04             🧑  作者: Mango

给定一个整数N ,任务是以国际位置值格式打印给定整数的输出,并在右边将逗号放在适当的位置。

例子

方法:请按照以下步骤解决问题:

  1. 将给定的整数N转换为其等效的字符串。
  2. 从右到左遍历给定字符串的字符。
  3. 每3个字符遍历一次后,插入一个’,’分隔符。

下面是上述方法的实现:

C++
// C++ program to implement the
// above approach
  
#include 
using namespace std;
  
// Function to put thousands
// separators in the given integer
string thousandSeparator(int n)
{
    string ans = "";
  
    // Convert the given integer
    // to equivalent string
    string num = to_string(n);
  
    // Initialise count
    int count = 0;
  
    // Traverse the string in reverse
    for (int i = num.size() - 1;
         i >= 0; i--) {
        count++;
        ans.push_back(num[i]);
  
        // If three characters
        // are traversed
        if (count == 3) {
            ans.push_back(',');
            count = 0;
        }
    }
  
    // Reverse the string to get
    // the desired output
    reverse(ans.begin(), ans.end());
  
    // If the given string is
    // less than 1000
    if (ans.size() % 4 == 0) {
  
        // Remove ','
        ans.erase(ans.begin());
    }
  
    return ans;
}
  
// Driver Code
int main()
{
    int N = 47634;
    string s = thousandSeparator(N);
    cout << s << endl;
}


输出:
47,634

时间复杂度: O(log 10 N)
辅助空间: O(1)