我正在尝试编写一个将时间作为三个整数参数(小时,分钟和秒)的函数,并返回自上次时钟“触发12”以来的秒数。使用此函数计算金额两次之间的时间,以秒为单位,两者都在一个12小时的时钟周期内。
这是我的代码,每次编译时,它都不会停止运行。
#include <iostream>
using std::cout;
using std::cin;
int passedSeconds(int, int, int);
int difference(int, int, int);
int main()
{
int hour1, minute1, second1;
int hour2, minute2, second2;
cout << "1. Enter hours, minutes and seconds (range 00:00:00 - 23:59:59): ";
cin >> hour1 >> minute1 >> second1;
while(hour1 > 23 || minute1 > 59 || second1 > 59)
{
if(hour1 < 23)
cout << "\nEnter correct hours value!";
if(minute1 < 59)
cout << "\nEnter correct minutes value!";
if(second1 < 59)
cout << "\nEnter correct seconds value!";
cout << "\n1. Enter hours, minutes and seconds: ";
cin >> hour1 >> minute1 >> second1;
}
cout << "Passed seconds from last 12 (am or pm): " << passedSeconds(hour1, minute1,second1);
cout << "\n2. Enter hours, minutes and seconds (range 00:00:00 - 23:59:59): ";
cin >> hour2 >> minute2 >> second2;
while(hour2 > 23 || minute2 > 59 || second2 > 59)
{
if(hour2 < 23)
cout << "\nEnter correct hours value!";
if(minute2 < 59)
cout << "\nEnter correct minutes value!";
if(second2 < 59)
cout << "\nEnter correct seconds value!";
cout << "\n2. Enter hours, minutes and seconds: ";
cin >> hour2 >> minute2 >> second2;
}
cout << "\nDifference between two times is "
<< difference(hour2, minute2, second2) - difference(hour1, minute1, second1)
<< " seconds.";
return 0;
}
int passedSeconds(int hour, int minute, int second)
{
if(hour >= 12)
hour -= 12;
return hour * 60 * 60 + minute * 60 + second;
}
int difference(int hour, int minute, int second)
{
return hour * 60 * 60 + minute * 60 + second;
}
答案 0 :(得分:0)
我尝试使用Visual Studio编译器和GCC编译器编译代码,一切正常。 代码中的一个明显错误:
if(hour1 < 23)
cout << "\nEnter correct hours value!";
if(minute1 < 59)
cout << "\nEnter correct minutes value!";
if(second1 < 59)
cout << "\nEnter correct seconds value!";
在第一个和第二个while循环中,如果您的小时数无效,则需要输出错误消息。现在,如果它们有效,则显示它们,因此将<
更改为>
。
就像我说的,程序运行正常,如果我在控制台中运行它,等待我的输入。 但是,如果我运行一些在线编译器,我注意到你说的话。这是因为我无法将程序用作控制台。尝试同时提供您读入的所有数据......
我去了CodeRunner的网站,看到了这个截图:
我不知道你是否尝试过,但在开始之前尝试给出整个程序输入..所以这样的事情:
23 25 14
14 15 49
(请注意,这不会留下错误检查和要求新输入的空间。您将不得不以不同的方式处理...)
可悲的是我无法在CodeRunner中测试这个,因为我没有任何OSX设备。
(我也无法作为评论回复,因为我还没有足够的分数)
我希望它能帮到你!