如何解决给用户10分钟时间来完成任务
用户有10分钟的时间来完成此测验,应在10分钟(600秒)结束后终止。
据我所知,当前代码启动一个计时器,打印问题,接收答案并检查答案是否正确,然后检查经过的时间。
从调试看来,只要我没有回答问题,时间就会持续过去10分钟以上,我希望程序在到达10分钟后立即终止。我不知道这是否可能。
我希望代码在600秒结束时立即终止。一段时间(时间> 600秒){执行代码}的本质是未知的,我不知道这是否可行或有什么功能可以帮助实现这一目标。
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;
}
}
解决方法
我不确定这不是一个正确的c ++问题,而是设计领域的问题。
据我所知,您计算时间的方式没有任何问题,但我会采用上述建议的设计,并使用不同的线程执行倒数,当倒数完成时,请杀死“ “线程。
我会使用boost库中的线程,因为它们可能被强制终止,并且这似乎是必需的,因为我们可能会在时间到时等待用户响应。
祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。