我正在尝试完成我的C ++类的作业。我不希望为我完成任务,但是我陷入了僵局,而且我的教授不是最擅长回复电子邮件的人。她正在进行很多事情,所以可以理解。

我正在创建一个程序来从输入文件中读取数据。数据包括员工的姓,工作时数和每小时的工资率。我的问题是我需要将此信息放入两个并行阵列中。如果我能找到解决办法,我可以自己完成任务,但是我已经在google上进行了字面搜索,并观看了所有我能找到但无济于事的视频。

Here is the input data:
Smith     40  10.00
Jackson   25  8.00
Hill      35  10.00
Withers   28  7.25
Mills     32  7.55
Myers     50  10.25
Johnson   45  10.50
Mcclure   38  9.50
Miller    42  8.75
Mullins   40  10.75


更新:我已经编辑了代码,并且接近要继续进行项目下一步所需的结果。我已经编辑了如何从已有的文件中读取和初始化数据。但是,在我的专栏文章之间,我得到了一个奇怪的数字序列。

Smith
-9.25596e+61
-9.25596e+61
-9.25596e+61
40
-9.25596e+61
-9.25596e+61
-9.25596e+61
10.00
-9.25596e+61
-9.25596e+61
-9.25596e+61
Jackson
-9.25596e+61
  7.25
-9.25596e+61
25
-9.25596e+61
-9.25596e+61
-9.25596e+61
8.00
-9.25596e+61
-9.25596e+61
-9.25596e+61
Hill
-9.25596e+61
-9.25596e+61
-9.25596e+61
35
-9.25596e+61
-9.25596e+61
-9.25596e+61
10.00
-9.25596e+61
-9.25596e+61
-9.25596e+61


如下是我的修改代码。

    #include<iostream>
#include<fstream>
#include<iomanip>
#include<string>
using namespace std;

const int NOFROWS = 10;
const int NOFCOLS = 3;

void readFile(ifstream& infile, string X[], double y[][NOFCOLS]);
void print(ifstream&infile,ofstream& outfile, string x[], double y[] [NOFCOLS]);

int main()
{

//variables

string names[20];
double wages[NOFROWS][NOFCOLS];
ifstream incode;
ofstream outcode;
incode.open("employeeinformation.txt");
outcode.open("results.txt");
if (!incode)
{
    cout << "No data" << endl;
    system("pause");
    return 1;           //if loop to terminate program if unable to open    file
}
cout << fixed << showpoint << setprecision(2) << endl;
readFile(incode, names, wages);  //calls function readFile
print(incode,outcode, names, wages);

incode.close();
outcode.close();
system("pause");
return 0;
}


//Function to read file and input information into array.
void readFile(ifstream& infile, string x[], double y[][NOFCOLS])
{
//local variables, used as counters for while loop.
int r = 0;
int c = 0;

for (r = 0; r < NOFROWS; r++)
    infile >> x[r]; // gets information from file for position
infile >> y[r][c];
//r++; //counter to increase position value
for (c = 0; c < NOFCOLS; c++)
{
    infile >> y[c][r];
}


}

void print(ifstream&infile, ofstream& outfile, string x[], double y[]         [NOFCOLS])
{
cout << setw(10) << "Names" << setw(10) << "hours" << setw(10) <<        "wages";
for (int r = 0; r < NOFROWS; r++) {
    outfile << x[r] << " " << endl;
    for (int c = 0; c < NOFCOLS; c++)
    {
        outfile << setw(10) << y[r][c] << " " << endl;



        }
    }
}

最佳答案

似乎您打开了文件一次,但是尝试读取其内容两次。

readFile(incode, names);  // reads incode until all data is read
readFile2(incode, wages); // reads from the same incode, that has all data already expended


尝试以例如closeopen文件为例,或者将读取指针移至第二个调用之前的开头,或者更好地重构代码以进行RAII文件管理。

09-06 04:24