我有一个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个不重复的点按顺序输出。
谢谢啦!

解决方案 »

  1.   

    给RMB ,今天之内给代码。
      

  2.   

    while(文件未结束)
    {
     读一行
     解析成xy值
     if(已经存在)
        continu;
     保存
    }
    输出-------------
    还要什么呢
      

  3.   

    这个文件的格式一定是这个样子的吗 ?  文件的格式可以改成 2进制么 ? 那样就好做多了 ,fread 一个结构体,判断值
      

  4.   

    这个文件的格式一定是这个样子的吗 ?  文件的格式可以改成 2进制么 ? 那样就好做多了 ,fread 一个结构体,判断值
      

  5.   

    strcut PT
    {
     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);//添加
    }
     
    }
      

  6.   

    1、用数组方式建一个最大堆(Heap)或最小堆, 
    2、依次读取每行数据,插入堆中,如果重复则忽略。
    3、全部处理完毕后使用堆排序算法输出结果。