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