【发布时间】:2016-04-18 15:05:56
【问题描述】:
我需要编写一个从文件中读取数据并将值存储到并行数组中的函数。在文本文件中我有一个名字,在下一行我有一组 4 个分数。关于如何实现这一点的任何提示。 这是文本文件的示例
joe
30 75 90 88
ben
100 75 93 20
现在这是我到目前为止的代码
ifstream input;
int main()
{
string nameArray[];
double grades[];
void nameGrade(string[], double[]);
input.open("scores.txt");
nameGrade(nameArray, grades);
for (int i = 0; i <4; i++)
{
cout << "student name: " << nameArray[i] << " Student Grades: " << grades[i] << endl;
}
input.close();
return 0;
}
void nameGrade(string name[], double grade[])
{
for (int i = 0; i < 5; i++)
{
getline(input,studentName[i]);
input >> studentGrade[i];
}
}
【问题讨论】:
-
每个学生有 4 个成绩,因此使用相同的索引,
i不起作用,“并行数组”也不起作用。这不是学生人数和年级数之间的一二一对应。 -
@PaulMcKenzie 这根本不是真的,所要做的就是将文件读入数组,然后添加元素,您可以在需要的地方开始一个数组...即,如果joe 有前 4 个,然后是 0 - 3,依此类推。你只需要分成多个循环。还有 op 你如何确定谁得到什么成绩?
-
您可以使用 STL 容器还是需要您自己实现数组?举个简单的例子,这将是在公园里散步,
std::map<std::string, std::vector<unsigned> >。 -
@Afflicted 当我看到“并行数组”时,我假设你有
m的东西,每个东西都包含n的东西。所以thing[0]和thing2[0]是相关的,而不是thing[0]与thing2[4]或其他数字相关。 -
@afflicted 名字下面的4个等级对应第一个名字,我需要把4个等级加起来然后存储到对应的等级位置
标签: c++ arrays ifstream parallel-arrays