如何停止C ++程序?

stephenmiles08

我编写了一个程序,提示用户猜测1-10之间的数字(我已编程为产生随机数),如果用户成功猜到的数字与其生成的随机数相同,则会打印“祝贺”,否则会提示用户再试一次。但我想在一段时间后(例如Game Over)阻止用户回答。但是提示不断出现,我尝试在while循环中使用break,但它不起作用,我还尝试使用exit函数,该函数实际上停止了程序的运行,但在回答2次后就停止了运行,这不是我的意思想。

#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {

int a,b,c,d,e,f;
//  generate a random number, prompt the user for any number if the users guess is in line with the random number generated the user wins else try again

//generate a random number between 1 - 10 store it in a variable
cout << "Random Number Generator \n \n";
srand(time(0));

for(int i = 1; i == 1; i++){
   a =  1+(rand() % 10);
   cout << a << endl;
}

//prompt the user for numbers ranging from 1 - 10
cout << "type in a number from (1 - 10)\n";
cin >> b;
c++;

//check if the number is the same as the random number

//this checks to see if the user gets the question, else it continues running till he gets it
while(a != b){
   cout << "You're incorrect!\n";
   cout << "type in a number from (1 - 10)\n";
   cin >> b;
   
   while(b <= 3){
      exit(3);
   }
   
}
//print result

if(a == b){
   cout << "congratulations";
}

return 0;
}

我该如何进行这项工作?

迈克猫

您可以计算用户回答的次数,并在用户执行了所需次数后停止。

//prompt the user for numbers ranging from 1 - 10
cout << "type in a number from (1 - 10)\n";
cin >> b;
int answer_count = 1; // variable to count answers (there is already 1 answer here)
const int max_attempts = 10; // number of attempts the user has

//check if the number is the same has the random number

//this checks to see if the user gets the question, else it continues running till he gets it
while(a != b){
   cout << "You're incorrect!\n";
   cout << "type in a number from (1 - 10)\n";
   cin >> b;
   answer_count++; // count this new answer
   if (answer_count >= max_attempts){ // check if the count reached the "certain amount of time"
     break; // exit from this loop
   }   
}

或者,您也可以给用户一定的时间进行猜测。例如10秒。这可以使用C ++chrono轻松实现

#include <chrono>
#include <iostream>
#include <random>

int main(int argc, char **argv)
{
const int max_time = 10; // seconds
const int min_secret = 1;
const int max_secret = 10;


// This generates a random number between min_secret and max_secret using the STL random library
std::random_device r;
std::default_random_engine e(r());
std::uniform_int_distribution<int> uniform_dist(min_secret, max_secret);
int secret = uniform_dist(e);

auto start = std::chrono::system_clock::now();

int guess;

do {
  std::cout << "Type a number from (1 - 10)\n";
  std::cin >> guess;
  if (guess == secret)
    break;
  std::cout << "Your guess is incorrect!\n";

  // See if the time elapsed since the start is within max_time
  auto now = std::chrono::system_clock::now();
  auto elapsed_time = std::chrono::duration_cast<std::chrono::seconds>(now - start);
  if (elapsed_time.count() > max_time) {
    std::cout << "You ran out of time.\n";
    exit(0);
  } else {
    std::cout << "You still have " << max_time - elapsed_time.count() << " seconds left\n";  
  }
} while (guess != secret);

std::cout << "Your guess was correct, congratulations!";

}

请注意,仅在用户尝试猜测之后才执行时间检查,因此,如果时间限制为10秒,并且用户等待30秒键入内容,则该时间检查仍将允许。要在C定时器完全杀死++程序,你可以使用thread库产卵第二个线程来处理所经过的时间,甚至使用中断根据方案(见https://stackoverflow.com/a/4001261/15284149为计时器示例)。

另外,请注意,用户输入没有被清除,并且如果用户写了数字以外的任何内容,则您的程序将具有未定义的行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#:如何在单击按钮之前停止我的程序

来自分类Dev

如何停止以守护程序运行的程序

来自分类Dev

如何停止传输守护程序?

来自分类Dev

如何异常停止fortran程序

来自分类Dev

如何停止协同程序?

来自分类Dev

如何停止传输守护程序?

来自分类Dev

如何停止处理程序执行

来自分类Dev

如何停止GPSD守护程序?

来自分类Dev

如何停止处理程序线程?

来自分类Dev

如何找到程序停止的原因?

来自分类Dev

如何避免iconv错误停止程序

来自分类Dev

如何停止Qt App冻结主程序?

来自分类Dev

如何在程序中停止执行

来自分类Dev

如何从应用程序停止通知

来自分类Dev

如何在程序中停止可运行

来自分类Dev

如何停止该程序中出现的空格?

来自分类Dev

如何从循环中断以停止程序运行

来自分类Dev

什么程序发出此声音,如何停止?

来自分类Dev

如何停止应用程序自动启动

来自分类Dev

如何在hangman程序中停止循环?

来自分类Dev

如何使用lldb从已停止的程序继续?

来自分类Dev

如何停止Qt App冻结主程序?

来自分类Dev

如何停止Windows安装驱动程序

来自分类Dev

如何在我的程序中停止执行

来自分类Dev

如何在程序中停止可运行

来自分类Dev

如何从应用程序停止通知

来自分类Dev

如何停止按字母顺序打印的程序

来自分类Dev

如何在 try/except 中停止程序

来自分类Dev

程序的执行停止-C(内存分配)