我有一个包含 1000 行的文本文件。第一行看起来像“1 Jacob Emily”。第2-1000行就是这样。我需要编写一个程序来调用一个搜索男性姓名和女性姓名的函数。
我的输出应该是这样的:
例如,如果用户输入名称“Justice”,则程序应输出:
Justice is ranked 406 in popularity among boys.
Justice is ranked 497 in popularity among girls.
如果用户输入名称“Walter”,则程序应输出:
Walter is ranked 366 in popularity among boys.
Walter is not ranked among the top 1000 girl names.
这是我搜索名称的功能:
void name_search (string name)
{
int rank;
string male, female;
ifstream infile;
bool male_found = false, female_found = false;
infile.open ("babynames2004.txt");
if (infile.fail())
{
cout << "The file was corrupt.\n";
}
while (!infile.eof() && male_found == false && female_found == false)
{
infile >> rank >> male >> female;
if (name == male)
male_found=true;
else if (name == female)
female_found=true;
}
if(male_found == true && female_found != true)
{
cout << name << " is ranked " << rank << " in popularity among boys.\n";
cout << name << " is not ranked among the top 1000 girl names.\n";
}
else if (male_found != true && female_found == true)
{
cout << name << " is not ranked among the top 1000 boys names.\n";
cout << name << " is ranked " << rank << " in popularity among girls.\n";
}
else if (male_found == true && female_found == true)
{
cout << name << " is ranked " << rank << " in popularity among boys.\n";
cout << name << " is ranked " << rank << " in popularity among girls.\n";
}
else if (male_found != true && female_found != true)
{
cout << name << " is not ranked among the top 1000 boys names.\n";
cout << name << " is not ranked among the top 1000 girl names.\n";
}
infile.close();
}
这是调用该函数的程序的输出(因为没有更好的句子)。
This program allows you to search for the rank of a name from a list of the 1000
2004 年最受欢迎的男性和女性婴儿名字。
输入您要搜索的名字: Jacob Jacob 在男孩中的人气排名第一。雅各布没有跻身前 1000 名女孩名字之列。
你想再次运行这个程序吗?(是或否) y 此程序允许您从 2004 年 1000 个最受欢迎的男性和女性婴儿名字列表中搜索一个名字的排名。
输入您要搜索的名字:Emily Emily 未跻身前 1000 名男孩名字之列。艾米丽在女孩中的人气排名第一。
你想再次运行这个程序吗?(是或否) y 此程序允许您从 2004 年 1000 个最受欢迎的男性和女性婴儿名字列表中搜索一个名字的排名。
输入您要搜索的名字: Jordan Jordan 在男孩中的人气排名第 43 位。乔丹没有进入前1000名的女孩名字。
你想再次运行这个程序吗?(是或否)
Jordan 这个名字出现在男性的第 43 行和女性的第 70 行。问题似乎是,当名称同时出现在男性姓名和女性姓名时,输出错误。顺便说一句,这是一门编程课的作业,这门课就像一场游戏。这不是关于实际学习编程,所以我仅限于在课堂上教授的基本结构。
谁能告诉我这是为什么?