C++;计算两次之间的时间量 我没有任何C++的经验,所以我有点困惑——我正在上高中编程课,我们希望在几乎不知道任何C++或编程技巧的情况下完成这个任务。
我应该写一个程序,以24小时格式读取事件的开始和结束时间。然后我需要打印经过的小时数和分钟数C++;计算两次之间的时间量 我没有任何C++的经验,所以我有点困惑——我正在上高中编程课,我们希望在几乎不知道任何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 我们应该将它们分为两种不同的情况(第一次是在第二次之前,反之亦然——我们应该以相同的方式处理这两种情况)。有没有一种方法可以在没
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;
}
int main():{
int第一次;
int第二次;
内-外时间;
祝贺你写了这么好的问题。你清楚地思考了它,表明你已经做了一些工作
如果不允许您使用If语句,您的其他选项包括:
- 第三运算符
?:
- 返回绝对值的
abs()
函数
- 计算两个时间差。一个假设第一个时间更大。另一个-假设第二个时间更大。然后使用
std::max()
从两个结果中取较大值
由于这是一项家庭作业,我将不提供更多详细信息。如果您需要更多帮助,您可以通过编辑您的问题来提问。如果您确实想避免If
s,您可以获取时间差的绝对值。将时间差加上24小时,然后将时间差除以24小时
此外,如果您计划以该格式输入,mod 60
将给您错误的答案,因为100%60==40
编辑:从示例输出中可以看出,对于第二次在第一次之前的情况,您应将其视为第二次实际上是第二天的时间
在这种情况下,请考虑始终将时间差增加24小时,然后使用模运算将时间限制在24小时以下
这是我在编辑之前的帖子内容:
您可以利用布尔表达式导致0(false)或1(true)的事实。例如:
delta = 24 * (time < 0);
time += delta;
delta=24*(时间<0);
时间+=增量;
然而,这只是在极少数情况下的选择。除非在课程中讨论过这种可能性,否则你可能不应该在家庭作业中使用这一概念。如果
,为什么要任意限制“不使用”-你的作业中是否特别提到了这一点?你是否可以使用三元表达式来代替?(这不是if
,但也是一样的。查一下。)你发布的代码中有几个错误。在main()之后有一个无关的“:`after
和差异
尚未声明,您不会在返回int
的函数中返回值……什么样的类希望您在不教授作业所需的任何概念的情况下完成作业?您至少有一本教科书吗?所有解决方案都需要使用比更高级的工具e> 如果你还没有学过如果如果如果的话,我不相信你还学过其他任何方法,因为如果是最基本的编程概念之一。另一个选项:std::max
或std::min
谢谢你,Gene。我添加了这个选项。差值的绝对值会给出错误的结果lt.如果开始是0900
而结束是0800
,则绝对值将表示它是1小时,而不是23小时。没有注意到该示例会这样做。已修复。根据我对问题本身的理解,这里不可能表示0900的开始和0800的结束,因为规范指示时间的顺序是proVIED不相关——(第一次在第二次之前,反之亦然——我们应该以相同的方式处理这两种情况)