Assignment was to take information about sales made, hours worked and number of dependents from a file, calculate the gross pay expected on one of two plans
Plan A 10% commission on sales, and 9.50 an hour with 1.5x overtime after 40 hrs
Plan B 30% commission

then we had to calculate all tax deductions for the higher paying plan and output these to both the screen and an output file.
I keep getting an unhandled exception error at my gross pay pointer planA inside the PickaPlan function.
Any suggestions or comments are greatly appreciated.

Here is the input file

1200.00 45 1
1200.00 40 3
1200.00 35 4
1875.50 35 3
1875.50 40 5
1875.50 45 2
2250.75 48 4
2250.75 40 3
2250.75 35 2

``````#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

const double COMMISSION_RATEA = .10;
const double COMMISSION_RATEB = .3;
const double SOC_SEC_RATE = .06;
const double PAY_RATE = 9.5;
const double FED_TAX = .125;
const double STATE_TAX = .08;

char PickaPlan(float, int, float *, float *);

void OutputandRecord(float, int, int, char, ofstream&, float *, float *);

int main()
{
float inSales;
int inHours, inDep;
char plan;

float* planA;
float* planB;

//declare fstreams and open files
ifstream fin;
fin.open("salary3.in");

ofstream fout;
fout.open("salary3.out");

cout << "  Gross   Plan    Social     State      Federal     Health     Net  " << endl;
cout << "   Pay           Security  Income Tax  Income Tax  Insurance   Pay  " << endl;
cout << " ------- ------  --------  ----------  ----------  ---------  ----- " << endl;

fout << "  Gross   Plan    Social     State      Federal     Health     Net  " << endl;
fout << "   Pay           Security  Income Tax  Income Tax  Insurance   Pay  " << endl;
fout << " ------- ------  --------  ----------  ----------  ---------  ----- " << endl;

//loop through all input, calculation, and output

while( !fin.eof() )
{
fin >> inSales >> inHours >> inDep;
fin.ignore(80, 10);

plan = PickaPlan(inSales, inHours, planA, planB);

OutputandRecord(inSales, inHours, inDep, plan, fout, planA, planB);

}

cin.get();
cin.get();
return 0;

}

char PickaPlan(float sales, int hours, float * planA, float * planB)
{

//this is where exception occurs
*planA = hours * PAY_RATE;

//overtime calculation
if (hours > 40)
{
hours -= 40;
*planA += hours * ( PAY_RATE * .5);
}

*planA += sales * COMMISSION_RATEA;

*planB = sales * COMMISSION_RATEB;

if(*planA > *planB)
return 'A';
else
return 'B';
}

void OutputandRecord(float sales, int hours, int dependents, char plan, ofstream& fout, float * planA, float * planB)
{
float grosspay, social_sec, state_tax, fed_tax, netpay;
int insurance = 25;

if(plan == 'A')
grosspay = *planA;
else
grosspay = *planB;

social_sec = grosspay * SOC_SEC_RATE;
state_tax = grosspay * STATE_TAX;
fed_tax = grosspay * FED_TAX;

if(dependents >= 3)
insurance += 10;

netpay =  grosspay - (social_sec + state_tax + fed_tax + insurance);

fout <<
setw(8) << grosspay << setw(7) << plan << setw(10) << social_sec << setw(12) << state_tax
<< setw(12) << fed_tax << setw(11) << float(insurance) << setw(7) << netpay << endl;

cout <<
setw(8) << grosspay << setw(7) << plan << setw(10) << social_sec << setw(12) << state_tax
<< setw(12) << fed_tax << setw(11) << float(insurance) << setw(7) << netpay << endl;
}``````
2
Contributors
1
2
Views
10 Years
Discussion Span
Last Post by VernonDozier

I experimented with your code and I think a problem might be that you are declaring, but possibly not setting aside memory for

``````float* planA;
float* planB;``````

When I put these two lines at the top of the function:

``````planA = new float;
planB = new float;``````

the program didn't crash. It went into an infinite loop, but it did not crash.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.