-3

我在这段代码中有问题。当我调用函数时。编译器显示此错误:

“函数调用中的参数太少”.......................... .....................

bool check_matrix(int x, int y){
    if (x<ROWS || y<COLUMNS)
        return true;
    return false;

    }

bool compute_duplicate(int x, int y, int array[], int array_length){
    for (int i=0; i< array_length; i++)
    {
        if(array[i]==compute_address(x,y))
            return false;
    }

    return true;
    }
////////////////////////////////////

for (int i=0; i<array_length; i++){
    if ((check_matrix(x,(y+1))==true) && compute_duplicate((x,(y+1), array, array_length)==false)) {
        array[i]= compute_address(x,(y+1));
        y++;
        d++;
        i++;
    }

    if ((check_matrix((x+1),y)==true) && compute_duplicate((x+1),y, array, array_length)==false)) {
        array[i]=compute_address((x+1),y);
        x++;
        d++;
        i++;
    }
    array_length=d;
}
4

5 回答 5

3

以下函数调用有一个放错位置的括号

compute_duplicate((x,(y+1), array, array_length)==false)

它应该是

(compute_duplicate(x,(y+1), array, array_length)==false)

循环中的两个地方存在相同的错误。

于 2013-04-09T07:10:48.113 回答
1

你的问题在这里:

compute_duplicate((x,(y+1), array, array_length)==false))

即你试图compute_duplicate一个类型的参数调用bool,它是有效表达式 (x,(y+1), array, array_length)==false的结果。请注意,逗号是 C/C++ 中的运算符,因此上述表达式的有效结果是array_length==false

大概意思是:

compute_duplicate(x,(y+1), array, array_length)==false
于 2013-04-09T07:10:59.860 回答
1

compute_duplicate((x,(y+1), array, array_length)==false))正在调用compute_duplicate表达式(x,(y+1), array, array_length)==false),它是一个布尔值,true当且仅当(x,(y+1), array, array_length)is false。这不是你想要的。

于 2013-04-09T07:11:03.597 回答
1

这里有一对额外的牙套:

compute_duplicate((x,(y+1), array, array_length)==false)

使编译器认为您将单个布尔值作为参数传递。松开它们并修复错误。

于 2013-04-09T07:11:12.323 回答
1

compute_duplicate((x,(y+1), array, array_length)==false)正在调用compute_duplicate一个参数,即(x,(y+1), array, array_length)==false.

你的意思是(compute_duplicate(x,(y+1), array, array_length)==false)

(只是 s 的排列略有不同,()但 C++ 的一段非常不同。

于 2013-04-09T07:11:21.920 回答