我的功能有问题.. 我希望函数有两个参数.. 一个是对象数组,第二个是用户给出的代码 并进入运行线性搜索的函数,并检查用户的代码是否存在,如果代码存在将返回其在数组中的位置,否则返回-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
答案 0 :(得分:3)
试试这个:
int passwdSearch(Eidos pinPro[], int pass)
{
for(int i=0; i<N; i++)
{
if(pinPro[i].getPasswd()==pass)
return i;
}
return -1;
}
答案 1 :(得分: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;
}
答案 2 :(得分:0)
如果元素不是数组中的第一个元素,则始终会激活else。你应该删除它,并在while之后返回-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;
}