我在功能上有问题..
我希望函数具有两个参数..
一个将是对象的数组,第二个将是用户给出的代码
并进入函数以运行线性搜索,并检查用户代码是否存在以及代码是否存在将返回其在数组中的位置,否则返回-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

最佳答案

如果元素不是数组中的第一个元素,则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;
    }

关于c++ - 在对象c++数组上进行线性搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47721129/

10-11 19:31
查看更多