C ++计算两次之间的时间量

时间:2016-01-29 23:54:53

标签: c++

我没有任何C ++经验,所以我有点困惑 - 我正在上高中编程课程,当我们几乎不知道任何c ++或编程技巧时,我们应该做这个任务。

我应该编写一个程序,以24小时格式读取事件的开始和结束时间。然后我需要打印经过的小时数和分钟数。

ex 1: 
first time: 0800
second time: 1705
time elapsed: 9 hr and 5 min

ex 2:
first time:0900
second time: 0800
time elapsed: 23 hr 0 min

我们应该把它们分成两种不同的情况(第一次是在第二次之前,反之亦然 - 我们应该以同样的方式处理两种情况)。如果没有if语句,有没有办法做到这一点?那将是理想的,因为我们还没有学到它们。

到目前为止,这就是我的全部内容:

int main() : {

    int first_time;
    int second_time;
    int dif_time;

    std::cout << "Enter first time" << endl;

    std::cout << "Enter second time" << endl;

    difference = second_time - first_time;

    double mod_time = difference % 60;

}

3 个答案:

答案 0 :(得分:1)

祝贺发布这样一个写得很好的问题。你清楚地把思想融入其中并表明你已经做了一些工作。

如果您不被允许使用if语句,您的其他选项是:

  • 第三运营商?:

  • 返回绝对值的abs()函数

  • 计算两个时差。一个假设第一次更大。另一个 - 假设第二次更大。然后使用std::max()

  • 获取两个结果中较大的一个

由于这是一项家庭作业,我不会提供更多细节。如果您需要更多帮助,可以通过编辑问题来提问。

答案 1 :(得分:1)

如果你真的想避免if s,你可以取时间差的绝对值。在差值上加24小时,然后将差值模24小时。

此外,如果您计划以该格式提取输入,mod 60会给您错误的答案,因为100 % 60 == 40

答案 2 :(得分:1)

编辑:从您的示例输出中可以看出,对于第二次在第一次之前的情况,您应将其视为第二次实际上是第二次的时间。

在这种情况下,考虑总是在时差上增加24小时,然后使用模数操作将时间限制在24小时以下。

这是编辑前我的帖子的内容:

你可以利用布尔表达式导致0(假)或1(真)的事实。例如:

delta = 24 * (time < 0);
time += delta;

然而,这只是在极少数情况下可供选择的选项。除非在你的课程中讨论过这种可能性,否则你的作业可能不应该使用这个概念。