Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:函数调用中的参数太少_C++ - Fatal编程技术网

C++ C++;:函数调用中的参数太少

C++ C++;:函数调用中的参数太少,c++,C++,我的代码有问题。当我调用函数时。编译器显示此错误: “函数调用中的参数太少” " 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< a

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

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

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;
}
bool检查矩阵(int x,int y){

如果(x以下函数调用的括号放错了位置

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))
也就是说,您正试图使用一个类型为
bool
的参数调用
compute\u duplicate
,这是有效表达式的结果(x,(y+1),数组,数组长度)==false
。注意,逗号在C/C++中是一个运算符,因此上面表达式的有效结果是
array\u length==false

这可能意味着:

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

compute\u duplicate((x,(y+1),array,array\u length)==false))
正在调用表达式
(x,(y+1),array,array\u length)==false)
上的
compute\u duplicate
,该表达式是一个布尔值,当且仅当
(x,(y+1),array,array\u length)
false
。这不是您想要的。

这里有一对额外的大括号:

compute_duplicate((x,(y+1), array, array_length)==false)
使编译器认为您传递了一个bool作为参数。松开它们,错误应该得到修复。

compute\u duplicate((x,(y+1),array,array\u length)==false)
使用一个参数调用
compute\u duplicate
,结果是
(x,(y+1),array,array\u length)==false

你是说
(计算重复(x,(y+1),数组,数组长度)=false)


(只是
()的排列略有不同)S,但C++的一个非常不同的部分是什么?哪一行给出了一个错误?给出实际的编译器错误,而不是一小部分。如果你认为需要比较布尔和<代码> true ,那么请记住比较的结果也是布尔的,所以你需要写<代码>((校验矩阵(x,(y + 1))=真)=真)。
。更严重的是,如果你没有用所有不必要的
==true/false
,以及这些比较周围的括号使代码不可读,那么问题就很明显了。@Yuushi:很明显,函数是:check\u matrix&compute\u replicate。你能看到另一个函数吗?我不知道为什么问了一个问题后,我问了中间否决:(@mahdimb:有人出于某种原因不喜欢这个问题(太简单?太多符号?不完整的信息?),他否决了这个问题;其余的被称为“”:)但事实上,你的问题并不比大多数关于SO==>的问题更糟,所以你从我这里得到了一个“+1”-为了大公无私;)