学校向けに C++ でプログラムを書いています。
別の関数のループから関数を呼び出す必要があります。5 行を読み取り、読み取った数値の各コレクションを double 値に入れる必要があります。現在、ファイルを正しく読み取れるようにしようとしています。現在、プログラムを実行するたびに、ループを通過して情報を 5 回出力しますが、最後の行の数字を 5 回しか出力しないようです。
プログラムが入力ファイルの最後の行でのみ動作するように、コードのどの部分がそれを作っているのでしょうか?
ここに私の情報があります:
読み取る必要がある入力ファイル:
1121 15.12 40 9876 9.50 47 3333 22.00 35 2121 5.45 43 9999 10.00 25
私が使用しているコード:
double process_employee(double& employeeNumber, double& employeeRate, double& employeeHours)
{
ifstream employeeInputFile;
employeeInputFile.open("employee input file.txt");
if(employeeInputFile.fail())
{
cout << "Sorry, file could not be opened..." << endl;
system("pause");
exit(1);
}
//For some reason, this is only printing the data from the last line of my file 5 times
while (!employeeInputFile.eof())
{
employeeInputFile >> employeeNumber >> employeeRate >> employeeHours;
}
}
void process_payroll()
{
double employeeNumber = 1.0;
double employeeRate = 1.0;
double employeeHours = 1.0;
cout << "Employee Payroll" << endl << endl;
cout << "Employee Hours Rate Gross Net Fed State Soc Sec"
<< endl;
//caling process_employee 5 times because there are 5 lines in my input file
for(int i = 1; i <= 5; i++)
{
process_employee(employeeNumber, employeeRate, employeeHours);
cout << "Employee #: " << employeeNumber << " Rate: " << employeeRate << " Hours: "
<< employeeHours << endl;
}
}