Как разбить поплавок на две переменные? (C ++) - PullRequest
0 голосов
/ 13 ноября 2018

Я не могу понять, как взять общее количество часов и разделить его на обычные и сверхурочные часы.

Чего я хотел бы добиться: добавить модуль, который делит количество отработанных часов на обычные и сверхурочные. Этот модуль должен иметь один параметр «in» и два параметра «out».

То, что я мог придумать, было:

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 - мои выводы. Если я добавлю 35.6 для total_hours, он скомпилируется и даст мне -4.40. Это хорошо с вводом 40 или выше, но когда дело доходит до чего-то меньшего, это всегда дает отрицательное значение ovt_hours. Я действительно запутался в том, как не дать мне дать отрицательное число. Я искал везде, чтобы найти решение, но я не мог найти ничего, что могло бы помочь мне понять, что я делаю неправильно. Мне бы очень помогло, если бы кто-нибудь мог объяснить это самым простым способом.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Есть одна вещь, которую вы должны понять: Использование оператора «if» с другим оператором «if» (без «else if» или «else») определенно заставит ваш компилятор перейти к обоим операторам «if» (при условии, что условия выполняются).

Также вы должны заметить, что в вашем коде есть логическая ошибка:

  1. "if (total_hours> = 0 || total_hours <= 40)" </li>
  2. "if (total_hours> = 41 || total_hours <= 60)" </li>

Когда вы вводите "total_hours = 35.6", компилятор входит в оба оператора if. Зачем? Потому что 35,6 это> = 0 и <= 40 (1-й оператор if), а 35,6 это <= 60 (2-й оператор if). </p>

Поэтому вы ДОЛЖНЫ использовать «else if» для своего второго оператора if.

Другое дело, что вам может потребоваться использовать «&&» вместо «||» так как вы проверяете диапазон между 2 значениями. Использование "||" означает, что вы проверяете только диапазон ниже / выше значения.

0 голосов
/ 17 ноября 2018

Вы можете работать до 40 часов в обычном режиме ...

int reg_hours = max(total_hours, 40);

Если вы проработали более 40 часов, то любые дополнительные часы - это сверхурочные часы ...

int ovt_hours = 0;
if (total_hours > 40) {
    ovt_hours = total_hours - 40;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...