1

クラスオブジェクトの配列を検索するように線形検索アルゴリズムを設定していますが、出力は一致しません。配列内の特定の名前を検索すると、配列内の1番目と3番目の値が見つかりますが、2番目の値は見つかりません。

以下は私のコードです。ご協力ありがとうございます。

int linsearch(string val)
{
    for (int j=0; j <= 3; j++)
    {
        if  (player[j].getLastName()==val)
         return j ;         
    }
        return 1 ;
}   


void showinfo()
{
    string search;
    int found ;


    cout << "Please Enter The Player's Last Name : " ;
    cin >> search ;

    found=linsearch(search);

    if (found==1)
    {
        cout << "\n There is no player called " << search ;
    }
    else
    {
        cout << "\n First Name : " << player[found].getFirstName() << "\n" << "Last Name : " << player[found].getLastName() <<
            "\n" << "Age : " << player[found].getAge() << "\n" << "Current Team : " << player[found].getCurrentTeam() << 
            "\n" << "Position : " << player[found].getPosition() << "\n" << "Status :  " << player[found].getStatus()  << "\n\n";
    }

    cin.get() ;

    menu() ;

}
4

3 に答える 3

6

2 番目の要素のインデックスを「見つかりません」コードとして使用しているため:

int linsearch(string val)
{
    for (int j=0; j <= 3; j++)
    {
        if  (player[j].getLastName()==val)
         return j ;         
    }
        return 1 ;
}   

たとえば、インデックスにできないものを返す必要があります-1。または、std::find_ifを使用してください。

于 2013-01-22T21:07:56.653 に答える
2

2 番目の要素のインデックスは、「見つからない」状態を示す値と同じです。

-1「見つからない」状態にフラグを立てるなど、無効なインデックスを使用します。

int linsearch(string val)
{
    for (int j=0; j <= 3; j++)
    {
        if  (player[j].getLastName()==val)
         return j ;         
    }

    return -1;
}

-1次に、呼び出し元の関数で次を確認します。

if (found==-1)
{
    cout << "\n There is no player called " << search ;
}
于 2013-01-22T21:08:23.707 に答える
0

このようなことをします...見つからない場合は「-1」などの他の整数を返します

int linsearch(string val)
{
for (int j=0; j <= 3; j++)
{
    if  (player[j].getLastName()==val)
     return j ;         
}
    return -1 ;
} 


void showinfo()
{
string search;
int found ;


cout << "Please Enter The Player's Last Name : " ;
cin >> search ;

found=linsearch(search);

if (found == -1)
{
    cout << "\n There is no player called " << search ;
}

[...]
于 2013-01-22T21:11:28.863 に答える