繁体   English   中英

当用户输入时,分和秒(c ++)时,查找自上次触及12秒以来的秒数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM