C++ 给用户10分钟完成任务

C++ 给用户10分钟完成任务,c++,timer,clock,timing,C++,Timer,Clock,Timing,用户有10分钟的时间完成此测验,测验应在10分钟(600秒)结束后终止 目前,据我所知,该代码启动计时器,打印问题,接收答案并检查答案是否正确,然后检查时间流逝 从调试来看,似乎只要我没有回答问题,时间就会持续过去10分钟,我希望程序在10分钟后立即终止。我不知道这是否可能 我更希望代码在600秒结束时立即终止。while(时间>600秒){execute code}的性质,我不知道这是否可能,或者哪些函数可以帮助实现这一点 srand(time(0)); int score =

用户有10分钟的时间完成此测验,测验应在10分钟(600秒)结束后终止

目前,据我所知,该代码启动计时器,打印问题,接收答案并检查答案是否正确,然后检查时间流逝

从调试来看,似乎只要我没有回答问题,时间就会持续过去10分钟,我希望程序在10分钟后立即终止。我不知道这是否可能

我更希望代码在600秒结束时立即终止。while(时间>600秒){execute code}的性质,我不知道这是否可能,或者哪些函数可以帮助实现这一点

    srand(time(0));
    int score = 0;
    int QAnswered = 0;

    //initializes 10 minute timer and tells user how long they have.

    auto start = high_resolution_clock::now();
    auto end = high_resolution_clock::now();
    auto duration = duration_cast<seconds>(end - start);
    cout << "Time Limit is 10 minutes\n" << endl;

    //loops through all 10 questions
    for (int k = 0; k < 10; k++) {
        int y = rand() % 100;  //random number 1-100 to pick a question out 
        
        cout << "Q." << k + 1 << " " << Q[y] << y << endl;  //prints Question number and then Question
        cout << "Please enter your answer" << endl;;
        cin >> ans;
        transform(ans.begin(), ans.end(), ans.begin(), ::toupper);
        if ((ans == "T" || ans == "TRUE") && A[y] == "TRUE")
            score++;
        if ((ans == "F" || ans == "FALSE") && A[y] == "FALSE")
                score++;
            
        end = high_resolution_clock::now();
        duration = duration_cast<seconds>(end - start);
        if (duration.count() >= 600) {
            cout << "Time Finished" << endl;
            break;
        }
    }
srand(时间(0));
智力得分=0;
int QAnswered=0;
//初始化10分钟计时器并告诉用户他们有多长时间。
自动启动=高分辨率时钟::现在();
自动结束=高分辨率时钟::现在();
自动持续时间=持续时间(结束-开始);

我不确定这是一个恰当的C++问题,而不是设计领域的问题。

据我所知,计算时间的方式没有问题,但我会采用上面提出的设计,让不同的线程执行倒计时,当倒计时完成时,杀死“提问”线程

我会使用boost库中的线程,因为它们可以被强制终止,这似乎是必要的,因为我们可能会在时间结束时等待用户响应


祝你好运

请发一封信。您的代码不完整,但我认为您可以删除大部分代码,同时仍然演示相同的问题。顺便说一句,问题是什么?代码是否在10分钟后终止?没有标准方法中止来自
std::cin
的输入,但可能有操作系统相关的方法。您还需要在后台运行一个线程,该线程执行计时,并使用操作系统特定的可用方式中止输入。@Someprogrammerdude为了简单起见,我只需给用户所有他们需要的时间键入答案,然后检查超时,不确定,但我认为这是行动approach@idclev463035818这是一种可能性,当然更简单。:)您删除了太多,代码中不再有
cin
。另外,如果你解释一下是什么让你认为你的代码是错误的,那就更好了。它有什么作用?这与它应该做的有何不同?