c - 删除二维数组中的重复项

标签 c arrays

我有 5700 行和 3 列的二维数组。 必须从该数组中消除重复的行,并仅打印多个重复行中的一行。 计数=5700。 例如,

24.742235   0.005334    0.052465    
27.345229   -0.222687   0.266042    
27.345229   -0.222687   0.266042    
25.528389   -0.063540   0.117000    
24.742235   0.005334    0.052465    
25.528389   -0.063540   0.117000    
24.742235   0.005334    0.052465    
25.528389   -0.063540   0.117000    
24.742235   0.005334    0.052465    
25.528389   -0.063540   0.117000    
27.345229   -0.222687   0.266042    
24.742235   0.005334    0.052465    
27.345229   -0.222687   0.266042    
25.528389   -0.063540   0.117000    
25.528389   -0.063540   0.117000    
27.345229   -0.222687   0.266042    
27.345229   -0.222687   0.266042    
24.742235   0.005334    0.052465    
24.742235   0.005334    0.052465    
27.345229   -0.222687   0.266042    

代码:

for(p=0;p<count;p++)
{
  for(ppp=p+1;ppp<count;ppp++) 
  {
    if(plane[ppp][1]!=plane[p][1])
    {
      printf("%lf\t%lf\t%lf\n",plane[p][0],plane[p][1],plane[p][2]);
      printf("%lf\t%lf\t%lf\n",plane[ppp][0],plane[ppp][1],plane[ppp][2]);
    }
  }
}

我想从该示例中删除重复的行。第 2 行和第 3 行相同。所以我只想显示第 2 行或第 3 行。

最佳答案

执行此操作的简单函数如下(注意:仍有待测试,因此请将此视为概要):

int A[5700][3];

int elimdups(void)
{
    int i, j, k, m, n=5700;
    for (i=0; i<n-1; i++) {                     // for all rows
        for (j=i+1; j<n-1; j++) {               //  for all next rows
            for (k=0; k<3; k++)                 //   for each cell
                if (A[i][k]!=A[j][k]) break;    //    check cells equal

            if (k<3) {                          // row j is duplicate of row i
                for (k=j; k<n-1; k++)           //  move all rows up
                    for (m=0;m<3;m++)
                        A[k][m]= A[k+1][m];
                n--;
            }
        }
    }
    return n;
}

关于c - 删除二维数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42504082/

相关文章:

python - 将图像数组从 Python 传递到 C 会带来损坏的数据

javascript - 如何将多选框的值发送到django后端

javascript - 如何组合这两个 JavaScript 数组

java - 复制公式 POI 的单元格值

javascript - 从数组中查找 parent 和 child

令人困惑的 'if' 语句

c - 如何编写可在多硬件平台上运行的可配置嵌入式 C 代码

c - 不一致的 recv() 行为

OpenGL 模型 View 矩阵 4x4 的紧凑表示

java - 将文件数组放入 java 类中