[英]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.