1

我有一个包含 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 行。问题似乎是,当名称同时出现在男性姓名和女性姓名时,输出错误。顺便说一句,这是一门编程课的作业,这门课就像一场游戏。这不是关于实际学习编程,所以我仅限于在课堂上教授的基本结构。

谁能告诉我这是为什么?

4

0 回答 0