查找用户输入小时,分钟和秒后自上次敲击12秒以来的秒数(c ++)

时间:2014-02-24 20:27:19

标签: c++ int

我正在尝试编写一个将时间作为三个整数参数(小时,分钟和秒)的函数,并返回自上次时钟“触发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;
}

1 个答案:

答案 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的网站,看到了这个截图: Program input

我不知道你是否尝试过,但在开始之前尝试给出整个程序输入..所以这样的事情:

23 25 14
14 15 49

(请注意,这不会留下错误检查和要求新输入的空间。您将不得不以不同的方式处理...)

可悲的是我无法在CodeRunner中测试这个,因为我没有任何OSX设备。

(我也无法作为评论回复,因为我还没有足够的分数)

我希望它能帮到你!