Je dois calculer le revenu imposable et, pour une raison quelconque, lorsque j'indique un revenu de 5000 et que je dépose m pour une personne mariée, cela me donne un nombre légèrement erroné. Voici mon code:Mauvais numéro émis par les boucles if
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
double calcTax = 0;
double income = 0;
char choice;
do {
//Prompt user for income
cout << "Please enter in your taxable income.\nThis must be a positve number:" << endl;
cin >> income;
while (income < 0)
{
cout << "Please enter a positive value" << endl;
cin >> income;
}
//Ask if user is filing as single or married. Continue until correct input is received
char status;
cout << "Please enter an 'm' if married and filing jointly or an 's' if single and filing alone:" << endl;
cin >> status;
while ((status != 'm') && (status != 's'))
{
cout << "You have pressed an incorrect key. Please enter an 'm' if married and filing jointly or an 's' if single and fiing alone:" << endl;
cin >> status;
}
double sBase1 = 863,
sBase2 = 2588,
sBase3 = 4313,
mBase1 = 1726,
mBase2 = 5176,
mBase3 = 8626;
double sAdd2 = 25,
sAdd3 = 85,
sAdd4 = 181,
mAdd2 = 40,
mAdd3 = 175,
mAdd4 = 390;
double taxRate1 = 0.023,
taxRate2 = 0.033,
taxRate3 = 0.052,
taxRate4 = 0.075;
//Calculate tax if user is single, based on income tier
if (status == 's')
{
if (income <= sBase1)
{
calcTax = income * taxRate1;
}
if (sBase1 < income <= sBase2)
{
calcTax = ((income - sBase1)) * taxRate2 + sAdd2;
}
if (sBase2 < income <= sBase3)
{
calcTax = ((income - sBase2) * taxRate3) + sAdd3;
}
if (sBase3 < income)
{
calcTax = ((income - sBase3) * taxRate4) + sAdd4;
}
}
//Calculate tax if user is married, based on income tier
if (status == 'm')
{
if (income <= mBase1)
{
calcTax = income * taxRate1;
}
if (mBase1 < income <= mBase2)
{
calcTax = ((income - mBase1)) * taxRate2 + mAdd2;
}
if (mBase2 < income <= mBase3)
{
calcTax = ((income - mBase2) * taxRate3) + mAdd3;
}
if (mBase3 < income)
{
calcTax = ((income - mBase3) * taxRate4) + mAdd4;
}
}
//Display user's tax
cout << "$" << fixed << setprecision(2) << calcTax << endl;
//Ask if user would like to calculate another tax
//If so, repeat until done
char response;
cout << "Would you like to perform another tax calculation (y or n)?:" << endl;
cin >> choice;
while (choice != 'n' && choice != 'y')
{
cout << "Please enter y or n" << endl;
cin >> choice;
}
} while (choice == 'y');
return 0;
}
5000 et marié devrait retourner 148.04 mais à la place je reçois 165.85. Quelqu'un peut-il aider à souligner ce qui ne va pas?
Je pense que vous bénéficieriez d'utiliser un IDE avec un débogueur . Je suggère de télécharger Visual Studio ou Eclipse. Si vous n'avez jamais débogué de code, recherchez une courte vidéo YouTube sur la façon de déboguer dans votre IDE de votre choix. – plukich
Pourquoi ne fournissez-vous pas une formule avec laquelle vous êtes censé calculer votre code? De cette façon, nous pouvons comparer votre formule à la façon dont votre programme calcule la taxe et repérer le bug. –
plukich, j'utilise déjà Visual Studio. – riahtron3000