簡體   English   中英

在對象c ++數組上進行線性搜索

[英]linear search on array of object c++

我對一個函數有問題..我希望函數具有兩個參數..一個將是對象數組,第二個將是用戶給出的代碼,並進入函數以運行線性搜索並檢查是否用戶的代碼存在,如果代碼存在,將返回其在數組中的位置,否則返回-1 ...

這是我已經嘗試過的:

int passwdSearch(Eidos pinPro[], int pass)
{
int i=0;
bool found;
found=false;
while(i<N && found==false)
{
    if(pinPro[i].getPasswd()==pass)
    {
        found=true;
        return i;
    }
    else
        return -1;  
    i++;

}

}

我希望函數在密碼存在的情況下返回位置,否則返回符號號-1

問題在於,代碼返回位置僅針對數組的第一個元素,而其他4個元素函數返回-1

嘗試這個:

int passwdSearch(Eidos pinPro[], int pass)
{
    for(int i=0; i<N; i++)
    {
        if(pinPro[i].getPasswd()==pass)
            return i;
    }
    return -1;
}

試試這個代碼

int passwdSearch(Eidos pinPro[], int pass)
 {
   int i=0;
   bool found;
   found=false;
   while(i<N && found==false)
   {
      if(pinPro[i].getPasswd()==pass)
      {
        found=true;
        return i;
      }
     else
       i++;
   }
  return -1;
}

如果元素不是數組中的第一個元素,則else將始終被激活。 您應該將其刪除,然后再返回-1。

int passwdSearch(Eidos pinPro[], int pass)
{
    int i=0;
    bool found;
    found=false;
    while(i<N && found==false)
    {
        if(pinPro[i].getPasswd()==pass)
        {
            found=true;
            return i;
        }
    }
    return -1;
}

這樣,如果您遍歷整個數組而沒有找到所需的元素, 那么您將返回-1。

編輯

就像NathanOliver提到的那樣,發現是無用的,因為無論如何當您找到一個元素時,您都將返回。 因此,代碼變為:

    int passwdSearch(Eidos pinPro[], int pass)
    {
        int i=0;
        while(i<N)
        {
            if(pinPro[i].getPasswd()==pass)
                return i;
            i++;
        }
        return -1;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM