在保留输出到文件的同时限制控制台输出? C ++

问题描述 投票:0回答:1

语言:C ++

我的任务是编写一个程序,允许用户输入30到2000之间的数字,并列出该数字之前的质数。例如,用户输入数字50。然后,程序将找到3到50之间的每个质数,并将其显示在控制台上。我编写的代码就是这样做的。

第二组指令说将控制台输出限制为仅10个质数(无论用户输入的是什么,但将所有质数写入文件。

使用与以前相同的示例。这些是3到50之间的质数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

控制台只需要显示这些数字中的10个,其​​余的将被写入文件中。将ALL(无论有多少个)写入文件时,是否可以在控制台上仅显示10个整数?

感谢您阅读,如果您需要更多信息来回答问题,请给我发消息。

bool isPrime;

   for(int n = 2; n < integer; n++) {

      isPrime = isPrimeNumber(n);

      if(isPrime == true)
          cout<<n<<" ";
   }
   return 0;
}

int isPrimeNumber(int n) {
   bool isPrime = true;

   for(int i = 2; i <= n/2; i++) {
      if (n%i == 0) {
         isPrime = false;
         break;
      }
   }
   return isPrime;
c++ file-io console output primes
1个回答
0
投票

您只需要一个计数器变量即可跟踪您调用cout的次数。

//open file
int counter = 0;    

for(int n = 2; n < integer; n++){ 
    isPrime = isPrimeNumber(n); 

    if(isPrime == true){
        if(counter < 10){
            cout<<n<<" ";
            counter++;
        }
        //Write to file
    }
}
//Close file 

加分:

isPrimeNumber返回一个布尔值,因此您的函数应类似于:

bool isPrimeNumber(int n)

然后您可以在for循环中摆脱'isPrime'变量,而只需说:

if(isPrimeNumber(n))

如果不指定比较,则隐式检查值是否为true。

您还可以通过将isPrimeNumber函数更改为以下内容来对其进行稍微优化:

bool isPrimeNumber(int n){

    for(int i = 2; i <= n/2; i++){ 
        if (n%i == 0) return false;
    } 
    return true;
}
© www.soinside.com 2019 - 2024. All rights reserved.