C ++我不想在最后一个值后面写逗号

时间:2014-09-12 11:54:20

标签: c++

我的程序应该找到数字的因子并用它们之间用逗号打印出来。除了最后一个。那里没有逗号。

#include <iostream>
using namespace std;
int main()
{
    int number;
    cin >> number;

    if (number < 1)
    {
        cout << 0;
    }
    else if (number == 1)
    {
        cout << number;
    }

    for (int i=2; i <= number; i++)
    {

         while (number % i == 0)
         {
             number /= i;
             cout << i << ", ";
         }

    }
    cout << endl;
    return 0;
}

2 个答案:

答案 0 :(得分:2)

你想要这样的东西:

for (int i=2; i <= number; i++)
{

     while (number % i == 0)
     {
         number /= i;
         cout << i << (number != 1 ? ", " : "");
     }

}

答案 1 :(得分:0)

更简单的解决方案:

std::string sep;

for( int i = 2; i <= number; ++i )
{
    while( number % i == 0 )
    {
       std::cout << sep << i;
       sep = ", ";

       number = i;
    }
}

循环中不需要if但在第一次迭代中sep是一个空字符串

使用bool最简单的方法是:

bool first = true;

for( int i = 2; i <= number; ++i )
{
    while( number % i == 0 )
    {
       if( !first )
           std::cout << ", ";
       else
           first = false;

       std::cout << i;

       number /= i;
    }
}

接受你的选择。第一个有一些不错的东西,除了它在循环的每次迭代中都将sep重置为相同的值。你可以把if( sep.empty() )放在它前面。