[英]finding the number of seconds since it last struck 12 when user inputs an hour, minute, and seconds (c++)
我正在尝试编写一个函数,该函数将时间作为三个整数参数(小时,分钟和秒),并返回自上次时钟“触及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;
}
我尝试使用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
(请注意,这不会留出任何空间进行错误检查和请求新输入。您将不得不以其他方式来处理它……)
遗憾的是,由于我不拥有任何OSX设备,因此无法在CodeRunner中进行测试。
(我也无法发表评论,因为我还没有足够的观点)
希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.