我没有任何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;
}
答案 0 :(得分:1)
祝贺发布这样一个写得很好的问题。你清楚地把思想融入其中并表明你已经做了一些工作。
如果您不被允许使用if语句,您的其他选项是:
第三运营商?:
返回绝对值的abs()
函数
计算两个时差。一个假设第一次更大。另一个 - 假设第二次更大。然后使用std::max()
。
由于这是一项家庭作业,我不会提供更多细节。如果您需要更多帮助,可以通过编辑问题来提问。
答案 1 :(得分:1)
如果你真的想避免在差值上加24小时,然后将差值模24小时。if
s,你可以取时间差的绝对值。
此外,如果您计划以该格式提取输入,mod 60
会给您错误的答案,因为100 % 60 == 40
。
答案 2 :(得分:1)
编辑:从您的示例输出中可以看出,对于第二次在第一次之前的情况,您应将其视为第二次实际上是第二次的时间。
在这种情况下,考虑总是在时差上增加24小时,然后使用模数操作将时间限制在24小时以下。
这是编辑前我的帖子的内容:
你可以利用布尔表达式导致0(假)或1(真)的事实。例如:
delta = 24 * (time < 0);
time += delta;
然而,这只是在极少数情况下可供选择的选项。除非在你的课程中讨论过这种可能性,否则你的作业可能不应该使用这个概念。