2014-02-19 198 views
0

我必须从包含字符串和整数的文本文件中读取数据,并编写一个查找最老的人并显示其名称的程序。 这是在我的文本文件从文本文件(C++)中打印字符串和整数

 
Jefferson 17 
Bill 24 
Mary 19 
Jack 22 
Matthew 19 
Claudia 23 
Judy 18 
我无法打印的最古老的人的名字

一旦我发现的最古老的年龄是什么。任何人都可以通过它走过我吗?

+2

你有什么代码? – rerun

+1

你好,欢迎来到stackoverflow.com。请花些时间阅读[帮助页面](http://stackoverflow.com/help),尤其是名为[“我可以问些什么话题?”]的章节(http://stackoverflow.com/help/)讨论话题)和[“我应该避免问什么类型的问题?”](http://stackoverflow.com/help/dont-ask)。更重要的是,请阅读[Stack Overflow问题清单](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)。您可能还想了解[SSCCE](http://sscce.org/)是什么。 –

+0

现在仍然是你自己做了什么? 主持人需要关注这类问题。 – 2014-02-19 06:50:37

回答

1

您可以将它们简单地存储到vector<pair<string, int>>中,以将名称与年龄相关联。一旦你找到最古老的年龄,你会发现它的名字。

如果您将它们存储在两个单独的vector s中,请确保您同步跟踪它们。


更新时间:为您的代码(如你在下面评论),你应该改变

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 
    } 
    ... 
} 
+0

这是我到目前为止 的#include 的#include 的#include 的#include 使用命名空间std有; () \t ifstream f; (“data。”)。TXT“); \t字符串名称[7]; \t INT年龄[7],最大值= 0; \t对(INT I = 1; I <= 7; ++ⅰ) \t { \t \t如果(年龄[I]>最大) \t \t最大=年龄[I]; \t \t名称[I] = MAX; \t \t COUT <<名称[I] << ENDL; \t} \t系统(”暂停“); \t return 0; } – user3326689

+0

@ user3326689您可以分享您的代码,让我们更好地了解造成的错误。 – herohuyongtao

+0

我改变了我的代码到,但没有被使用命名空间std打印 的#include 的#include 的#include 的#include ; () \t intstream() ifstream f; \t f.open(“data.txt”); \t字符串名称[7]; \t int age [7],max = 0; \t对(INT I = 1; I <= 7; ++ⅰ) \t { \t \t如果(年龄[I]>最大) \t \t { \t \t \t最大=年龄[I]; \t \t \t name [i] = max; \t \t \t cout << name [i]; \t \t} \t} \t system(“pause”); \t return 0; } – user3326689

1

除非这是一个作业,在那里你必须自己实现算法,它实际上很容易解决一切使用standard C++ library

首先,您使用std::getline将每行读入std::string实例。

使用此字符串和std::istringstream,然后可以使用常规输入运算符>>解析出不同的字段。

您可以将数据存储在std::map中,其中年龄作为关键字,名称作为数据。由于std::map按键排序,地图中的最后一项是“最老”的人。

如果可以有多个年龄相同的人,则需要使用std::multimap代替,并准备打印同一年龄段的多个人。

+0

好吧,我会尝试,谢谢! – user3326689

相关问题