0

嘿伙计们,我正在编写一个程序,它从文件中读取数据并将其存储在一个结构中,我有几个问题。文本文件如下所示:

阿兹林,尼尔
2.3 6.0 5.0 6.7 7.8 5.6 8.9 7.6
巴贝奇,查尔斯
2.3 5.6 6.5 7.6 8.7 7.8 5.4 4.5

行中的第一个数字是难度级别,接下来的 7 个数字是分数,接下来是 24 个不同的名称。

我的程序将打印所有潜水员的姓名和难度级别。然后它只会打印潜水员 #1 的第一个分数,而不是所有分数。

此外,对于 2 号潜水员的分数,它会打印出第二个分数(第三个数字)而不是第一个分数(第二个数字)。对每个潜水员依此类推。

我怎样才能让它读取并打印每个潜水员的所有分数?

我已经为此工作了几个小时,因此非常感谢任何帮助!

我的代码:

for (lcv = 0; lcv < NUM_NAMES; lcv++)                    //reads in all of the data
{
getline(inFile, diveList[lcv].diversName);

inFile >> diveList[lcv].diff;

for (count = 0; count < NUM_SCORES; count++)
{
inFile >> diveList[lcv].scores[count];              //the problem may be here on down below where i print out the data... im not sure
}

inFile.ignore(200, '\n');

}

printTableOne (diveList);




void printTableOne (const diverList diveList)
{
int lcv;
int count = 0;
cout << "The number of divers for round 1 is: " << NUM_NAMES << endl << endl;

for (lcv = 0; lcv < NUM_NAMES; lcv++)
{

cout << "Diver #" << lcv << endl;
cout << setprecision(1) << fixed <<  endl;
cout << "NAME: " << diveList[lcv].diversName << endl;
cout << "DIFFICULTY LEVEL: " << diveList[lcv].diff << endl;
cout << "SCORES: " << diveList[lcv].scores[lcv] << endl;     //problem here??

cout << endl << endl;
}
4

1 回答 1

0

问题确实在一线

cout << "SCORES: " << diveList[lcv].scores[lcv] << endl;

在这里您只打印一个分数,它使用与潜水员相同的索引。而且由于您的潜水员数量多于分数,因此您很快就会从数组外部打印分数。

你需要一个循环,就像你从文件中读取分数一样。

于 2013-04-24T01:46:37.143 回答