无法在文本文件中找到两个名称

时间:2012-10-25 02:42:26

标签: visual-c++

我有一个包含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 雅各布在男孩中的受欢迎程度排名第一。 雅各布并没有被列为前1000名女孩的名字。

您想再次运行此程序吗? (是或否) ÿ 此程序允许您从1000的列表中搜索名称的等级  2004年最受欢迎的男女名字。

输入您要搜索的名称:Emily 艾米丽没有跻身前1000名男孩名单。 艾米丽在女孩中的受欢迎程度排名第一。

您想再次运行此程序吗? (是或否) ÿ 此程序允许您从1000的列表中搜索名称的等级  2004年最受欢迎的男女名字。

输入您要搜索的名称:Jordan 乔丹在男生中的受欢迎程度排名第43位。 乔丹没有跻身前1000名女孩名单。

您想再次运行此程序吗? (是或否)

乔丹的名字出现在第43行的男性和第70行的女性。问题似乎是当男性名字和女性名字都出现名称输出错误时。顺便说一句,这是一个编程类的任务,类就像一个游戏。这不是关于实际学习编程,所以我仅限于在课堂上教授的基本结构。

有人可以告诉我为什么会这样吗?

0 个答案:

没有答案