Получена неверная общая стоимость - PullRequest
0 голосов
/ 28 марта 2020

Учитывая цену еды (базовая стоимость еды), процент чаевых (процент от цены еды, добавляемой в качестве чаевых) и процент налога (процент цены еды, добавляемой в качестве налога) для еда, найдите и распечатайте общую стоимость еды.

Вот мой код:

void solve(double meal_cost, double tip_percent, double tax_percent) {

    double total;
    tip_percent=meal_cost*((tip_percent)/100.0);
    tax_percent=((tax_percent)/100.0)*meal_cost;
    total=(meal_cost)+(tip_percent)+(tax_percent);
    int t1=(double)total ;
    cout<<t1;
}

Это НЕ СРАВНИТЕ с этими значениями тестового примера, соответственно:

10.25 17 5

Ожидаемый результат:

13

Код прошел 3 теста, но в последнем случае не прошел контрольный пример с вышеупомянутыми значениями (поэтому я сомневаюсь, что расчет чаевых неверен или нет).

Я думаю, что это вопрос округления. Как мне справиться с этим?

NO CHANGE REFLECTED: cout<<round(t1);, я округлил значение, но все равно без изменений.

1 Ответ

0 голосов
/ 29 марта 2020

Я предполагаю, что ваша формула соответствует местной практике вашей страны (здесь чаевые и налог рассчитываются индивидуально, поэтому налог на чаевые не взимается, а чаевые не рассчитываются на основе облагаемой налогом стоимости еды)

Проблема является то, что ваш total определяется как int. Так что это усечено. И вам очень повезло с вашими первыми тестовыми случаями ;-)

Это должно уже улучшить ситуацию:

double t1=total ;

Однако это приведет к значению три di git, 12.505. С <iomanip> вы могли бы форматировать лучше:

cout<<fixed<<setprecision(2)<<t1;   // 12.50

Если вам не нужны две цифры, вы можете просто позволить форматированию выполнить свою работу:

cout<<fixed<<setprecision(2)<<t1;   // 13

Но это может быть лучшая идея для управления округлением на уровне вычисления с использованием некоторой функции <cmath>:

double t1=round(total) ;

Не связано: Наконец, это всего лишь упражнение, но я тем не менее порекомендовал бы вам рассмотреть возможность возврата значения из вашей функции и печати значения в другом месте. Это следовало бы принципу, что одна функция должна делать одно и делать это хорошо.

...