我的线性搜索有问题

时间:2011-05-03 08:15:30

标签: search linear

我尝试过在我的搜索中使用二进制搜索和while循环以及for循环,同样的问题正在发生。当我的原始程序进入此函数调用时,线性搜索功能(displayContent)将始终将-1分配给位置,并且在函数调用之后程序中断并退出。我试图重新安排我的程序,就像我说我尝试循环和while循环同时进行二进制和线性搜索。

我也在使用结构数据类型

struct info
{
    string name;
    double score[5];
    double avg;
};

这是我的函数调用

cout<<"Please enter the name of the person which you would like to search. ";
getline(cin, name);
cin.ignore();
displayContent(contestant, count, name);

这是我的功能定义

void displayContent(info contest[], int quantity, string id)
{
int position=-1;
bool found=false;

for(int index=0;index<quantity && !found;index++)
{
    if(contest[index].name.compare(id)==0)
    {
        found=true;
        position=index;
    }
}
    if(position==-1)
    {
        cout<<"That person was not one of the contestants.";
    }
    else
    {
        cout<<"The scores for "<<contest[position].name<<" are \n     Contestant     Judge1  Judge2  Judge3  Judge4  Judge5  Average"
            <<"\n______________________________________________________________________"<<endl;
        cout<<right<<setw(15)<<fixed<<setprecision(1)    <<contest[position].name<<setw(10)<<contest[position].score[0]<<setw(8)<<contest[position].score[1]<<setw(8)<<contest[position].score[2]<<setw(8)<<contest[position].score[3]
        <<setw(8)<<contest[position].score[4]<<setw(8)<<contest[position].avg<<endl;
    }
}

1 个答案:

答案 0 :(得分:1)

您是否确认getline符合预期?也许name包含行结尾字符。要排除输入问题,您可以尝试在调用name之前为contestant中知道存在的displayContent分配值。

我无法在搜索算法中发现任何问题。