我必须从包含字符串和整数的文本文件中读取,并编写一个程序来查找最老的人并显示他们的名字。 这是我的文本文件
Jefferson 17 Bill 24 Mary 19 Jack 22 Matthew 19 Claudia 23 Judy 18
一旦找到最老的年龄,我就无法打印最老的人的名字。谁能引导我走过它?
答案 0 :(得分:1)
您只需将它们存储到vector<pair<string, int>>
即可将姓名与年龄相关联。一旦找到最古老的年龄,就会找到它的名字。
如果您将它们存储在两个单独的vector
中,请确保同步跟踪它们。
已更新:对于您的代码(如下所述),您应该更改
for(int i=1; i<=7;++i)
{
if(age[i]>max)
max=age[i];
name[i]=max;
...
}
到
string name_oldest; // to store the oldest name
for(int i=1; i<=7;++i)
{
if(age[i]>max)
{
max=age[i];
name_oldest = name[i]; // update here
}
...
}
答案 1 :(得分:1)
除非这是学校作业,你必须自己实施算法,实际上使用standard C++ library解决所有问题非常容易:
首先,您使用std::getline
将每一行读入std::string
个实例。
使用此字符串和std::istringstream
,您可以使用普通输入运算符>>
解析出不同的字段。
您可以将数据存储在std::map
中,其中年龄为关键字,名称为数据。由于std::map
按键排序,因此地图中的最后一个条目是“最老的”。
如果可能有多个年龄相同的人,则需要使用std::multimap
代替,并准备打印多个年龄相同的人。