2017-04-22 1 views
-1

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; 
} 
+3

Utilisez votre débogueur pour le savoir? https://msdn.microsoft.com/en-us/library/k0k771bt.aspx – UnholySheep

+0

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). –

Répondre

0

utiliser DonT true, utilisez 1. lorsque cela est exécuté cout << "Are you married? True/False" << endl; dans l'invite de commande, assurez-vous que comme une réponse que vous mettez un 1 au lieu de vrai. Cela va résoudre votre problème.

+0

Oui, cela fonctionne. Merci beaucoup! –

+0

Pas de problème, s'il vous plaît choisir comme réponse à la question se ferme. – BlooB

+0

Comment puis-je choisir comme réponse? –