c++ - 给用户 10 分钟完成任务
问题描述
用户有 10 分钟的时间来完成这个测验,它应该在 10 分钟(600 秒)结束时终止。
目前,据我所知,代码会启动一个计时器、打印一个问题、接收一个答案并检查答案是否正确,然后检查是否经过了时间。
从调试来看,只要我没有回答问题,时间就会持续超过 10 分钟,我希望程序在达到 10 分钟后立即终止。我不知道这是否可能。
我希望代码在 600 秒结束时立即终止。while (time > 600 sec) { 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;
}
}
解决方案
我不确定这是一个正确的 c++ 问题,而是设计领域的问题。
据我所知,您计算时间的方式没有任何问题,但我会采用上面提出的设计,并让不同的线程执行倒计时,当倒计时完成时,终止“提问”线程。
我会使用 boost 库中的线程,因为它们可以被强制终止,而且似乎这是必要的,因为我们可能会在时间到时等待用户响应。
祝你好运!
推荐阅读
- windows - 带有 OFFSET 标签的汇编 PUSH 指令
- fortran - 在 Mac Big Sur 上写入标准输出时出现 gfortran 运行时错误
- list - 在 SwiftUI 中实现多个标题
- android - 即使添加了屏幕方向锁定,Android 屏幕方向
- javascript - 如何在 Typescript 中使用类型化变量作为具有相同名称的类型?
- google-apps-script - 如何使用 Google Apps 脚本中的字符串访问枚举值?
- javascript - 如何检查具有特定键值的对象是否存在
- r - R:缺乏互动性
- android - 将Android项目上传到github时如何忽略资产文件夹?
- php - Laravel 8 渲染belongsToMany 关系