IF anyone can give me a little more assistance I would be very greatful.

I am working on this program for my C++ class and here is how it goes.


Write a program that calculates and prints the monthly paycheck for an employee. The net pay is calculated after taking the following deductions.
Federal Tax 15%
State Tax 3.5%
Social Securtiy Tax 5.75%
Medicare 2.75%
Pension 5%
Health Ins $75.00
Your program shoud prompt user for input of employee name, and gross amount. The output will be stored into a file. format your output to have two decimal perscion.

As for when I run the program I type in the Employee name when prompted for name and then it prompts for Gross amount but doesnt wait for an answer.

Here is what I have so far:

string employee;
double gross;
double federal, state, ss, med, pension, health, net;

cout << "What is the Employees Name " << endl;
cin >> employee;
cout << "What is the Employees Gross Pay " << endl;
cin >> gross;

fstream fout;
fout.open ("taxes");
federal = (gross * .15);
fout << "Federal Tax" << federal << endl;
state = (gross * .035);
fout << "State Tax" << state << endl;
ss = (gross * .0575);
fout << "Social Security Tax" << ss << endl;
med = (gross * .0275);
fout << "Medicare/Medicaid Tax" << med << endl;
pension = (gross * .05);
fout << "Pension Plan" << pension << endl;
health = 75.00;
fout << " Health Insurance" << health << endl;
net = (gross - (federal + state + ss + med + pension + health));
fout << "Net Pay" << net << endl;

Not sure if I am on the write track but any help would be greatly appreciated.

Thanks ,

Recommended Answers

All 3 Replies

you are probably trying to enter a name that has embedded (white) spaces. to read an entire line (may contain white spaces) use getline.
getline( cin, employee ) ;

Yes, that is indeed the case. For cin , white space is a terminator, and the rest of the name stays in the input stream. the next cin statement reads from the remaining input buffer.
cin.get , will help u read the name inclusive of white spaces.
char name[20];

now it should work lets us know here.

>char name[20];
He's already using std::string. Why are you suggesting that he downgrade to C-style strings? Oh, and you have an off-by-one logic bug. The size argument to get should be 20. Finally, you should recommend getline instead of get, because get has the potentially confusing feature of leaving the delimiter in the stream. In this case, unless you hit one of the less common terminating cases, you get the infamous scanf "bug":

#include <iostream>

int main()
  char buff[20];

  std::cin.get ( buff, 20 );
  std::cout<<'|'<< buff <<"|\n";
  std::cin.get ( buff, 20 );
  std::cout<<'|'<< buff <<"|\n";
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.