Я предполагаю, что ваша формула соответствует местной практике вашей страны (здесь чаевые и налог рассчитываются индивидуально, поэтому налог на чаевые не взимается, а чаевые не рассчитываются на основе облагаемой налогом стоимости еды)
Проблема является то, что ваш 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) ;
Не связано: Наконец, это всего лишь упражнение, но я тем не менее порекомендовал бы вам рассмотреть возможность возврата значения из вашей функции и печати значения в другом месте. Это следовало бы принципу, что одна функция должна делать одно и делать это хорошо.