Проблема была указана в комментарии, так как это просто из-за неправильной интерпретации таблицы. В настоящее время вы жестко закодировали большинство чисел в правиле напрямую, и, следовательно, если в будущем порог 8000 изменится, вам придется изменить соответствующее значение в нескольких местах. Возможно, вы захотите определить переменную для хранения этих значений.
#include <iostream>
#include<string>
using namespace std;
int main()
{
double tax = 0;
double first_threshold = 8000;
double second_threshold = 32000;
double first_percent = .1;
double second_percent = .15;
double third_percent = .25;
double income = 0;
string marital_status;
cout << "Please enter your income: ";
cin >> income;
cout << "Please enter s for single, or m for married: ";
cin >> marital_status;
if (marital_status == "s")
{
if (income <= first_threshold)
{
tax = income * first_percent;
}
else if (income <= second_threshold)
{
tax = (income - first_threshold) * second_percent + first_threshold * first_percent;
}
else
{
tax = (income - second_threshold) * third_percent + first_threshold * first_percent + (second_threshold - first_threshold) * second_percent;
}
}
else
{
if (income <= 2 * first_threshold)
{
tax = income * first_percent;
}
else if (income <= 2 * first_threshold)
{
tax = (income - 2*first_threshold) * second_threshold + 2 * first_threshold * first_percent;
}
else
{
tax = (income - 2 *second_threshold) * third_percent + 2* first_threshold * first_percent + 2*(second_threshold - first_threshold) * second_threshold;
}
}
cout << "The tax is $" << tax << endl;
return 0;
}
Также обратите внимание, что порог для супружеской пары вдвое превышает порог для одиноких. Следовательно, если мы будем sh, мы можем сделать код более компактным, как показано ниже:
#include <iostream>
#include<string>
using namespace std;
int main()
{
double tax = 0;
double first_threshold = 8000;
double second_threshold = 32000;
double first_percent = .1;
double second_percent = .15;
double third_percent = .25;
double income = 0;
string marital_status;
cout << "Please enter your income: ";
cin >> income;
cout << "Please enter s for single, or m for married: ";
cin >> marital_status;
if (marital_status == "m"){
first_threshold *= 2;
second_threshold *= 2;
}
if (income <= first_threshold)
tax = income * first_percent;
else if (income <= second_threshold)
tax = (income - first_threshold) * second_percent + first_threshold * first_percent;
else{
tax = (income - second_threshold) * third_percent + first_threshold * first_percent + (second_threshold - first_threshold) * second_percent;
}
cout << "The tax is $" << tax << endl;
return 0;
}