2013-01-22 104 views
1

我有一個線性搜索算法設置爲通過類對象的數組來搜索它的工作,但輸出不匹配,當我搜索數組中的particluar名稱的第一個和第三個值INT數組中找到但第二個值沒有找到..線性搜索類對象的數組

以下是我的代碼感謝您的幫助。

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() ; 

} 

回答

6

因爲你使用的是第二個元素的索引爲「未找到」代碼:

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

您應該返回的東西,不能是一個索引,例如-1。或者更好的是,使用std::find_if

+0

謝謝你,看到我的mistak e .. – tarantino

+0

我可以向OP建議他使用-1而不是1。 – Coincoin

2

第二個元素的索引與標記「not found」條件的值相同。

使用無效指數喜歡-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 ; 
} 
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 ; 
} 

[...]