Как заставить массивы отображаться в файле?

Итак, у меня есть некоторый код, который принимает массив для идентификатора сотрудника, а затем также заполняет массивы за отработанные часы, ставку оплаты и т. Д., А затем отображает их все. С этой частью нет проблем, и все идет гладко. Однако я пытаюсь записать эти данные в файл, но вместо записи данных для всех сотрудников в файл он записывает данные только для одного сотрудника. Я не могу понять, почему!

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

using namespace std;
int main()
{
ofstream outputFile;
const int numOfEmployees = 7;
int long empId[numOfEmployees] = { 5658845, 4520125, 7895122, 8777541,                    8451277, 1302850, 7580489 };
int hours[numOfEmployees];
double payRate[numOfEmployees];
double wages[numOfEmployees];

outputFile.open("PayrollDataBackup.txt");

cout << "Enter the hours worked by 7 employees and their hourly pay        rates."<<endl;
cout << " " << endl;
for (int count = 0; count < numOfEmployees; count++)
{
cout << "Hours worked by employee #" << empId[count] << ":";
cin >> hours[count];
while (hours < 0)
{
cout << "Please enter a positive number: ";
cin >> hours[count];
}
cout << "Hourly pay rate for employee #" << empId[count] << ":";
cin >> payRate[count];
while (payRate[count] < 15.00)
{
cout << "Please enter a pay rate higher than $6.00: ";
cin >> payRate[count];
}
}
cout << " " << endl;
cout << "Here are the hours worked, pay rate and gross pay for each employee:" << endl;
cout << " " << endl;

for (int count = 0; count < numOfEmployees; count++)
{
wages[count] = hours[count] * payRate[count];

cout << " " << endl;
cout << fixed << showpoint << setprecision(2);
cout <<"ID:"<< empId[count] <<" Hours: "<< hours[count] << " Pay rate: $" << payRate[count] <<" Wage: $" << wages[count] << endl;

}
for (int count = 0; count < numOfEmployees; count++)
{

outputFile << empId[count] << " " << hours[count] << " " << payRate[count] << " " << endl;
outputFile.close();
}

system("pause");
return 0;
}

1

Решение

Вы закрываете файл после записи первой записи.

Изменить:

for (int count = 0; count < numOfEmployees; count++)
{
outputFile << empId[count] << " " << hours[count] << " " << payRate[count] << " " << endl;
outputFile.close();
}

Для того, чтобы:

for (int count = 0; count < numOfEmployees; count++)
{
outputFile << empId[count] << " " << hours[count] << " " << payRate[count] << " " << endl;
}
outputFile.close();
1

Другие решения


По вопросам рекламы [email protected]