Mon manuel C++ me demande d'écrire un programme pour calculer la taxe due. Je l'ai fait, mais lorsque le programme s'exécute, je ne vois que la ligne "Êtes-vous marié? Vrai/Faux" et une fois que je saisis du texte, quelques lignes supplémentaires sont sorties et le programme se termine immédiatement. Il est supposé poser quelques questions supplémentaires à l'utilisateur et stocker l'entrée dans des variables qui sont ensuite manipulées, mais le programme se ferme avant qu'il n'ait la possibilité de le faire. Où sont les erreurs? Merci beaucoup.Débogage d'un programme C++ pratique avec des fonctions Visual Studio 2015
// ch7progExercise5.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void getData(bool& marriedVal, int& childVal, int& salaryVal, double& pensionVal);
double taxAmount(bool marriedVal, int childVal, int salaryVal, double pensionVal);
bool married;
int children, grossSalary;
double pensionPercent;
int main()
{
getData(married, children, grossSalary, pensionPercent);
taxAmount(married, children, grossSalary, pensionPercent);
return 0;
}
void getData(bool& marriedVal, int& childVal, int& salaryVal, double& pensionVal)
{
cout << "Are you married? True/False" << endl;
cin >> marriedVal;
if(marriedVal)
{
cout << "How many children under the age of 14 do you have?" << endl;
cin >> childVal;
}
cout << "What is your gross salary? If married, provide combined income." << endl;
cin >> salaryVal;
cout << "What percentage of your gorss income did you contribute to a pension fund?" << endl;
cin >> pensionVal;
}
double taxAmount(bool marriedVal, int childVal, int salaryVal, double pensionVal)
{
double standardExemption, pension, taxRate, tax, taxableIncome;
int numPeople, personalExemption;
if (marriedVal)
{
standardExemption = 7000;
numPeople = 2;
}
else
{
standardExemption = 4000;
numPeople = 1;
}
numPeople += childVal;
personalExemption = 1500 * numPeople;
pension = pensionVal*salaryVal;
taxableIncome = salaryVal - (standardExemption + pension + personalExemption);
if (taxableIncome < 15000)
{
taxRate = 0.15;
tax = taxRate*taxableIncome;
}
else if (taxableIncome < 40000)
{
taxRate = 0.25;
tax = 2250 + taxRate*(taxableIncome - 15000);
}
else if (taxableIncome > 40000)
{
taxRate = 0.35;
tax = 8460 + taxRate*(taxableIncome - 40000);
}
else
cout << "Invalid income" << endl;
cout << tax << endl;
return tax;
}
Utilisez votre débogueur pour le savoir? https://msdn.microsoft.com/en-us/library/k0k771bt.aspx – UnholySheep
Par défaut, les flux utilisent 0 et 1 pour 'bool'. Pour activer true/false, vous devez utiliser ['cin >> boolalpha'] (http://en.cppreference.com/w/cpp/io/manip/boolalpha). –