每行显示输出4

时间:2015-05-28 20:07:02

标签: c++

我参加了我的第一个编程课程并且是这个论坛的新手。任何帮助将不胜感激!对于我的一个课程作业,我必须编写一个能够找到给定数字因子的程序,我已经启动并运行了程序,但其中一个规定是输出必须显示四行到一行那是我遇到麻烦的地方。我已经在其他论坛以及此处阅读过,但我想我并没有理解在特定情况下我必须做的事情。

这是我的代码:

#include <iostream>

using namespace std;

int main(){

    int n;

    while (cout << "Please enter a number: " && !(cin >> n)  || (n < 0.0) || cin.peek() != '\n')
    {
        cout << "Input must be a positive number!" << endl;    
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }

    for (int i=2; i <= n; i++)
    {
        while (n % i == 0)
        {
            n /= i;
            cout << "*" << i;
        }
    }
    cout << endl;
    system ("PAUSE");
    return 0;
}

2 个答案:

答案 0 :(得分:0)

您需要在循环外添加计数器。

//int counter = 0;

for (int i=2; i <= n; i++)
{
     while (n % i == 0)
    {
        n /= i;
        cout << "*" << i;
    }

}

计数器需要跟踪已打印的条目数。

Once you have seen 4 entries printed:  
    print an extra newline  
    and set the counter back to 0

答案 1 :(得分:0)

您可以使用以下内容:

void display_factors(std::size_t n, std::size_t factor_by_line)
{
    const char* sep = "";
    std::size_t count = 0;

    std::cout << n << " = ";
    for (int i = 2; i <= n; ++i) {
        while (n % i == 0) {
            n /= i;
            if (count == factor_by_line) {
                std::cout << std::endl;
                count = 0;
            }
            ++count;
            std::cout << sep << i;
            sep = " * ";
        }
    }
    std::cout << std::endl;
}

Live Demo