下面的代码是我的思路,
定义两个int型的一维数组,ch1[10],和ch2[10];
把二维数组的第一行赋值给ch1[10];
再从二维数组的第二行开始,把接下来的数据依次赋值给ch2[10];
赋值到第j行的时候,有
if(ch1==ch2);
break;
再用SetDlgItemInt()函数,把这个j显示到一个文本框上面。但是结果不是我想要的,
所以来找高手们帮忙看看。哪里出错了。这段代码不能直接运行,牵扯到之前还有一个二维数组。
就劳烦各位帮忙看看了先。
二维数组的话
我这边的二维数组是
0,0,0,1;
0,0,1,0;
0,1,0,0;
1,0,0,1;
0,0,1,1;
0,1,1,0;
1,1,0,1;
1,0,1,0;
0,1,0,1;
1,0,1,1;
0,1,1,1;
1,1,1,1;
1,1,1,0;
1,1,0,0;
1,0,0,0;
0,0,0,1;
0,0,1,0;
0,1,0,0;
1,0,0,1;
0,0,1,1;
0,1,1,0;
1,1,0,1;
1,0,1,0;
0,1,0,1;
1,0,1,1;
0,1,1,1;
1,1,1,1;
1,1,1,0;
1,1,0,0;
1,0,0,0;
0,0,0,1;
0,0,1,0;
0,1,0,0;
1,0,0,1;
0,0,1,1;
0,1,1,0;
1,1,0,1;
1,0,1,0;
0,1,0,1;
1,0,1,1;
0,1,1,1;
1,1,1,1;
1,1,1,0;
1,1,0,0;
1,0,0,0;
0,0,0,1;
0,0,1,0;
0,1,0,0;
1,0,0,1;
0,0,1,1;
0,1,1,0;
1,1,0,1;
1,0,1,0;
0,1,0,1;
1,0,1,1;
0,1,1,1;
1,1,1,1;
1,1,1,0;
1,1,0,0;
1,0,0,0;
0,0,0,1;
0,0,1,0;
0,1,0,0;
1,0,0,1;
这个二维数组的第一行和第十六行是相同的。但是最后显示出来的j是1024,不知道哪里错了。
void CCyber2Dlg::OnTime() 
{
// TODO: Add your control notification handler code here
int ch1[10];
int ch2[10];
int i,j;
for (i=0;i<lens;i++)
{
ch1[i]=matrix[0][i];
}
for (j=1;j<1024;j++)
{
for (i=0;i<lens;i++)
{
ch2[i]=matrix[j][i];
}
if(ch2==ch1)
break;
}
    SetDlgItemInt(IDC_Time,j);
}

解决方案 »

  1.   

    if(ch2==ch1)
    这样写,可行吗?
      

  2.   

    int i,j;
    BOOL b = FALSE;//第N个和第N+1个至最后的分别比较
    for (j=0;j<1024;j++)
    {
      for (k=j+1;k<1024;k++)
      {
        for (i=0;i<lens;i++)
        {
           // 0到lens - 1个全部相等
           if (matrix[j][i] != matrix[k][i])
           {
              //不相等,后面不用比较了
              b = FALSE;
              break;
           }
           b = TRUE;
        }
        if (b) //只找一次
          break;
      }
      if (b) //只找一次
          break;
    }if (b)
      SetDlgItemInt(IDC_Time,j);
      

  3.   


    改一下
    int i,j;
    BOOL b = FALSE;//第N个和第N+1个至最后的分别比较
    for (k=0;k<1024;j++)
    {
      for (j=k+1;j<1024;j++)
      {
        for (i=0;i<lens;i++)
        {
           // 0到lens - 1个全部相等
           if (matrix[j][i] != matrix[k][i])
           {
              //不相等,后面不用比较了
              b = FALSE;
              break;
           }
           b = TRUE;
        }
        if (b) //只找一次
          break;
      }
      if (b) //只找一次
          break;
    }if (b)
      SetDlgItemInt(IDC_Time,j+1); //j从0开始
      

  4.   

    void CCyber2Dlg::OnTime() 
    {
        // TODO: Add your control notification handler code here
        int ch1[10];
        int ch2[10];
        int i,j;
        for (i=0;i<lens;i++)
        {
            ch1[i]=matrix[0][i];
        }
        for (j=1;j<1024;j++)
        {
            for (i=0;i<lens;i++)
            {
                ch2[i]=matrix[j][i];
            }
            if(ch2==ch1)// 这里是两地址在比较吧  肯定是不相等的 ch2!= ch1;    
            break;
        }
        SetDlgItemInt(IDC_Time,j);
    }