我不知道如何计算总小时数并将其分为正常时间和加班时间。
我想实现的目标是:添加一个模块,将工作时间分为正常时间和加班时间。此模块必须具有一个“输入”参数和两个“输出”参数。
我能想到的是:
if (total_hours >= 0 || total_hours <= 40) {
reg_hours = total_hours;
}
if (total_hours >= 41 || total_hours <= 60) {
ovt_hours = (total_hours - 40);
}
total_hours是我的输入。 reg_hours和ovt_hours是我的输出。如果我在total_hours中输入35.6,它将进行编译并给我-4.40。输入40或更高时,它可以很好地工作,但是如果输入的值小于该值,它将始终产生负的ovt_hours值。我真的很困惑如何阻止它给我一个负数。我一直在到处寻找解决方案,但是找不到任何可以帮助我了解自己做错事情的东西。如果有人能够以最简单的方式对此进行解释,那将对我有很大帮助。
答案 0 :(得分:1)
您最多可以正常工作40个小时...
int reg_hours = max(total_hours, 40);
如果您工作了40多个小时,那么多余的时间就是加班时间...
int ovt_hours = 0;
if (total_hours > 40) {
ovt_hours = total_hours - 40;
}
答案 1 :(得分:0)
您应该了解一件事: 将“ if”语句与另一个“ if”语句(不带“ else if”或“ else”)一起使用肯定会使您的编译器同时进入两个“ if”语句(假设条件为真)。
此外,您应该注意到代码中存在逻辑错误:
当您输入“ total_hours = 35.6”时,编译器将同时进入两个if语句。为什么?因为35.6是> = 0和<= 40(if语句的第一个),而35.6是<= 60(if语句的第二个)。
因此,您必须在第二个if语句中使用“ else if”。
另一件事是,您可能需要考虑使用“ &&”而不是“ ||”因为您要检查2个值之间的范围。使用“ ||”表示您只检查范围低于/高于值的范围。