gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:34:26 25 4
gpt4 key购买 nike

我有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com