我打算用指针,但是运行时老是出现错误

泠然 发布于 2011/04/16 20:16
阅读 270
收藏 1

云原生2.0展望丨从“小众”到“首选”,推动云原生产业落地华为云作用几何?>>>

 #include<iostream>

 using namespace std;

bool judge_self(int **a,int h)

{

    int i,j;

    for(i=0;i<h;i++)

    for(j=0;j<h;j++)

      {

         if(a[i][j]==1)

         {

         if(a[i][i]==0||a[j][j]==0)

              return false;

         }

 }

         return true;

}

 bool judge_pass(int **a,int h)

{

  int sum,k=0;

  int i,j;

  int **b=new int *[h];

  for(i=0;i<h;i++)

  {

        b[i]=new int[h];   

  }

  for(i=0;i<h;i++)

  for(j=0;j<h;j++)

  {

        sum=0;

     for(k=0;k<h;k++)

        sum=sum+a[i][k]*a[k][j];

        if(sum!=0)

        b[i][j]=1;

        else

        b[i][j]=0;

  }

  for(i=0;i<h;i++)

  for(j=0;j<h;j++)

   if(a[i][j]!=b[i][j])

   {

      for(i=0;i<=h;i++)

 {

       delete []b[i];

        b[i]=NULL;

 }

      delete []b;

     return false;

    }

    for(i=0;i<=h;i++)

{

      delete []b[i];

 b[i]=NULL;

}

      delete []b;

     return true;

 

}

bool judge_sym(int **a,int h)

{

    int i,j;

   for(i=0;i<h;i++)

   for(j=0;j<=i;j++)

   {

      if(a[i][j]!=a[j][i])

      return false;

   }

        return true;

}

 void part(int **a,int h,int x)

{

   int *c,*d;

   int i,j;

   c=new int[h+1];

   d=new int[h+1];

   for(i=0;i<h;i++)

    {

       *(c+i)=i;

    }

    j=0;

    for(i=0;i<h;i++)

       if(a[x][i]==1)

       {

         *(d+i)=*(c+i);

       }

       cout<<"关于"<<x<<"的等价类:"<<endl;

    for(i=0;i<j;i++)

     cout<<d[i]<<' ';

     cout<<endl;

     delete []c;

     delete []d;

}

 

 

 int main()

 {

     int **a,h,o,i,j;

     cout<<"请输入所要的元素个数: "<<endl;

     cin>>h;

 a=new int*[h];

for(i=0;i<h;i++)

a[i]=new int[h];

     cout<<"请输入关系的矩阵:"<<endl;

     for(i=0;i<h;i++)

     for(j=0;j<h;j++)

     cin>>a[i][j];

     //cin>>o;

if(judge_pass(a,h))cout<<1<<endl;

// part(a,h,o);

     if(judge_self(a,h)&&judge_sym(a,h)&&judge_pass(a,h))

     {     cout<<"请输入要求那个元素:"<<endl;

            cin>>o;

          part(a,h,o);

      }

      else

      {

            cout<<"不是等价类。"<<endl;

      }  */

  for(i=0;i<=h;i++)

  {

         delete []a[i];

a[i]=NULL;

  }

      delete []a;

 

 return 0;

}

出错:for information on how your program can cause an assertion failure

 

加载中
0
周翼翼
周翼翼

1.你应该简单说一声你的程序想做什么

2.程序应该加注释,哪怕是自己看

3.好多空行

4.你把内层循环先放到外层循环的大括号里再说

5.所有类似delete [] b[i]的地方,你用的是i<=h,不要=,只有<

0
泠然
泠然

引用来自#2楼“周翼翼”的帖子

1.你应该简单说一声你的程序想做什么

2.程序应该加注释,哪怕是自己看

3.好多空行

4.你把内层循环先放到外层循环的大括号里再说

5.所有类似delete [] b[i]的地方,你用的是i<=h,不要=,只有<

返回顶部
顶部