Why is my output like this instead of all the data being in the table? (PS : must use while(!fin.eof())
thanks
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream fin;
ofstream fout;
string Name;
int Id;
float grossIncome ;
float netSalary;
float incomeTax =0;
cout <<"\nEnter the name and location of the input file: " << endl;
string file_input;
getline(cin, file_input);
fin.open(file_input.c_str() ) ;
cout <<"Enter the name and location of the output file: ";
string file_output;
getline(cin, file_output);
fout.open( file_output.c_str() );
getline(fin,Name);
while(!fin.eof())
{
fin >> Id >> grossIncome;
cout << setw(20) << left << Name
<< setw(8) << right << Id
<< setw(10) << grossIncome << endl;
fin.ignore(10,'\n');
getline(fin,Name);
}
if (grossIncome <= 3500)
{
incomeTax = 0.00;
}
else if (grossIncome >= 3500 && grossIncome <= 8000)
{
incomeTax = 0 + 0.06 * (grossIncome - 3500);
}
else if (grossIncome >= 8000 && grossIncome <= 20000)
{
incomeTax = 270.00 + 0.11 * (grossIncome - 8000);
}
else if (grossIncome >= 20000 && grossIncome <= 34000)
{
incomeTax = 1590.00 + 0.17 * (grossIncome - 20000);
}
else if (grossIncome >= 34000 && grossIncome <= 54000)
{
incomeTax = 3970.00 + 0.24 * ( grossIncome - 34000);
}
else if (grossIncome >= 54000)
{
incomeTax = 8770.00 + 0.32 * ( grossIncome - 52000);
}
else if (grossIncome < 0)
{
cout << "****Invalid Income";
}
netSalary = grossIncome - incomeTax;
cout << setfill(' ') << left << setw(18) << "\tName";
cout << setfill(' ') << left << setw(12) << "ID";
cout << setfill(' ') << left << setw(17) << "Gross Income";
cout << setfill(' ') << left << setw(12) << "Taxes";
cout << setfill(' ') << left << setw(16) << "Net Income";
cout << endl;
cout << setfill('=') << setw(70)<<"\t";
cout<<endl;
cout << setprecision(2) << showpoint << fixed;
cout << setfill(' ') << "\t" << setw(17)<< Name;
cout << setfill(' ') << setw(12) << Id;
cout << '$' << setfill(' ') << setw(16) << grossIncome;
cout << '$' << setfill(' ') << setw(11) << incomeTax;
cout << '$' << setfill(' ') << setw(16) << netSalary;
cout << endl;
Enter the name and location of the input file:
/Users/MJ/Desktop/incomes.txt
Enter the name and location of the output file: /Users/MJ/Desktop/output.txt
Miss Informed 125432 32560
Sweet Tooth 5432 9500
Bad Data 1255 -4500
John Smith 1225 3500
Nancy Brown 1555 154500
Name ID Gross Income Taxes Net Income
=====================================================================
Nancy Brown 1555 $154500.00 $41570.00 $112930.00
Sample File
Miss Informed
125432 32560.0
Sweet Tooth
5432 9500
Bad Data
1255 -4500.0
John Smith
1225 3500.0
Nancy Brown
1555 154500.00