0

我必须做这个练习:

编写一个 C++ 函数,给定一个具有两个 NxN 大小的整数的数组,如果行具有所有相同的元素(即使在不同的位置),则返回 true,否则返回 false。

这是我的代码:

#include <iostream>

using namespace std;

const int N = 5;


bool fool ( const int a [N][N])
{
    int x,y = 0;
    int j=0;
    int i=0;

    bool check[N] = {false};
    bool verify = false;

    for (i=0; i<N; i++)
    {

       check[i] = false;

    }

       while(j<N && !verify )
       {

         if(a[x][i]==a[y][j] && !check[j] )
         {

            check[j]=true;
            verify=true;
         }

         j++;

       }

       return verify;

}


int main ()
{


    const int a[N][N] = {{1,3,5,6,7},
                         {5,6,7,1,3},
                         {1,6,5,3,7},
                         {6,1,3,5,7},
                         {6,5,1,7,3}};




    if ( fool(a))
    {

           cout << " in all rows there are the same elements";

    }


    else
    {

           cout << " wrong, . ";

    }

    return 0;


}

但是程序崩溃了。我该如何解决?

4

2 回答 2

3
while( int j<N && !verify )

不要j在循环内部声明,它应该在外部声明。我很惊讶这甚至可以编译(它不能在 Visual Studio C++ 中编译)。

于 2012-04-27T12:04:37.073 回答
2

暂时忘记崩溃。有很多编译器错误。

1)

bool check[N] = false; 

应该:

bool check[N] = {false}

2)您ifor循环内声明,使其范围仅限于循环

for ( int i=0; i<N; i++)

但是您if在循环外的语句中访问它。那是行不通的。要解决此问题,请在循环外声明变量。

3) 以下是不正确的:

while( int j<N && !verify )

j要解决此问题,请在循环外声明变量。

崩溃的可能原因:

变量j,xy没有初始化,里面有垃圾。

于 2012-04-27T12:07:46.573 回答