我有一个TXT文件,内容如下
0.463249 0.520572
0.507135 0.524538
0.478349 0.567362
0.344395 0.520362
0.377888 0.497349
0.373788 0.533566
0.262401 0.465963
0.227582 0.466236
0.260064 0.430222
0.495946 0.85764
0.530229 0.875431
0.452567 0.876923
0.709478 0.604751
0.738249 0.592476
0.73323 0.644221
0.662678 0.10698
0.75 0
0.77574 0.122828
0.417468 0.55268
0.426766 0.525341
0.437678 0.538886
0.77574 0.122828
0.680376 0.196495
0.662678 0.10698
0.12022 0.199822
0.0970369 0.19941
0.0996343 0.16289
.............
总共有3000行,每行的数据时一个二维点的X,Y坐标,这3000个点应该只有500多个,所以重复性很高。
我要读取每个点,如果该点第一次出现,则存储下来(比如存到数组里)并记录下它的序号(从1开始)。如果前面出现过,则不存。
最后要把这500个不重复的点按顺序输出。
谢谢啦!
0.463249 0.520572
0.507135 0.524538
0.478349 0.567362
0.344395 0.520362
0.377888 0.497349
0.373788 0.533566
0.262401 0.465963
0.227582 0.466236
0.260064 0.430222
0.495946 0.85764
0.530229 0.875431
0.452567 0.876923
0.709478 0.604751
0.738249 0.592476
0.73323 0.644221
0.662678 0.10698
0.75 0
0.77574 0.122828
0.417468 0.55268
0.426766 0.525341
0.437678 0.538886
0.77574 0.122828
0.680376 0.196495
0.662678 0.10698
0.12022 0.199822
0.0970369 0.19941
0.0996343 0.16289
.............
总共有3000行,每行的数据时一个二维点的X,Y坐标,这3000个点应该只有500多个,所以重复性很高。
我要读取每个点,如果该点第一次出现,则存储下来(比如存到数组里)并记录下它的序号(从1开始)。如果前面出现过,则不存。
最后要把这500个不重复的点按顺序输出。
谢谢啦!
{
读一行
解析成xy值
if(已经存在)
continu;
保存
}
输出-------------
还要什么呢
{
float x;
float y;
};CPtrArray array; while (!feof(fp))
{
//读取
//转换存储到float i,j
i= xx;
j = xx;
int count = array.getCount();
BOOL b = FALSE;
for(int loop = 0;loop<count;loop++)
{
PT *pt = (PT *)array.GetAt(loop);
if(pt->x == i && pt->y == j)
{
b = TRUE;
break;
}
}if(!b)//没有
{
PT *pt = new PT;
pt.x= i;
pt.y = j;
array.add(pt);//添加
}
}
2、依次读取每行数据,插入堆中,如果重复则忽略。
3、全部处理完毕后使用堆排序算法输出结果。