所以我正在尝试将这个程序整合到一个项目中,这对我来说很奇怪。以下是控制台中发生的事情的示例:
从当前时间和等待期计算完成时间
当前时间:
以HH:MM 12:50 的格式输入24小时时间
等待时间:
以24小时格式输入格式为HH:MM完成时间的24小时时间:
4644952:4198980个
输入Y或y继续,任何其他停止
进程返回0(0x0)执行时间:3.927 s
按任意键继续。
粗体部分是我可以输入的唯一部分,然后它只是运行cout语句而不让我输入第二部分数据。然后从计算函数输出一些垃圾数。这是我的代码:
#include <iostream>
using namespace std;
void getEndTime(int c_hours, int c_minutes, int w_hours, int w_minutes, int& e_hours, int& e_minutes);
void getCurrentTime(int& c_hours, int& c_minutes);
void getWaitingTime(int& w_hours, int& w_minutes);
void runLoop();
int main()
{
char select;
cout << "Compute completion time from current time and waiting period \n";
do {
runLoop();
cout << "Enter Y or y to continue, any other halts";
cin >> select;
} while (select == 'y' || select == 'Y');
return 0;
}
void runLoop()
{
int current_hours, current_minutes, waiting_hours, waiting_minutes;
int end_hours, end_minutes;
getCurrentTime(current_hours, current_minutes);
getWaitingTime(waiting_hours, waiting_minutes);
getEndTime(current_hours, current_minutes, waiting_hours, waiting_minutes, end_hours, end_minutes);
cout << "Completion time in 24 hour format:\n" << end_hours << ":" << end_minutes << endl;
}
void getCurrentTime(int& c_hours, int& c_minutes)
{
cout << "Current time:\n"
<< "Enter 24 hour time in the format HH:MM ";
cin >> c_hours >> c_minutes;
}
void getWaitingTime(int& w_hours, int& w_minutes)
{
cout << "Waiting time:\n"
<< "Enter 24 hour time in the format HH:MM ";
cin >> w_hours >> w_minutes;
}
void getEndTime(int c_hours, int c_minutes, int w_hours, int w_minutes, int& e_hours, int& e_minutes)
{
if ((c_hours + w_hours) >= 24) {
e_hours = (c_hours + w_hours - 24);
}
else {
e_hours = (c_hours + w_hours);
}
if ((c_minutes + w_minutes) >= 60) {
e_hours += 1;
e_minutes = (c_minutes + w_minutes) - 60;
}
else {
e_minutes = c_minutes + w_minutes;
}
return;
}
我对此很陌生,所以如果有一些明显的我遗失,我会道歉。但是我希望你们中的一个可以帮助我,我完全不知道为什么这不起作用!谢谢!
答案 0 :(得分:2)
您遇到的问题是cin
正在进入错误状态,并且对cin
的所有后续调用都将自动失败,程序将继续运行。当你有时间时:
void getCurrentTime(int& c_hours, int& c_minutes)
{
cout << "Current time:\n"
<< "Enter 24 hour time in the format HH:MM ";
cin >> c_hours >> c_minutes;
}
您没有吃:
中存在的12:50
。因此,它会尝试将:
插入分钟并失败。
您需要做的是致电cin.get()
吃:
然后获取会议记录。
void getCurrentTime(int& c_hours, int& c_minutes)
{
cout << "Current time:\n"
<< "Enter 24 hour time in the format HH:MM ";
cin >> c_hours;
cin.get(); // eats :
cin >> c_minutes;
}