代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码:
#include <iostream>
#include <fstream>
using namespace std;
struct Node
{
int id;
double x;
double y;
};
int main()
{
Node a[30];
double dis[30];
int index[30];
int nmb = 0,i,j;
char ch;
ifstream is("a.txt");
ofstream os("b.txt");
if (!is.is_open())
{
cout << "文件打开失败"<<endl;
return 0;
}
while(!is.eof())
{
is >> a[nmb].id >> ch >> a[nmb].x >> ch >> a[nmb].y;
if(a[nmb].id > 0 && a[nmb].x > 0 && a[nmb].y>0)
nmb++;
}
is.close();
dis[0] = 0;
index[0] = 0;
for ( i =1;i<nmb;i++)
{
dis[i] = (a[i].x - a[0].x) *(a[i].x - a[0].x) + (a[i].y - a[0].y)*(a[i].y - a[0].y);
index[i] = i;
}
//排序
for (i=0;i<nmb-1;i++)
{
for (j=0;j<nmb-i-1;j++)
{
if(dis[j]>dis[j+1])
{
double t = dis[j];
dis[j] = dis[j+1];
dis[j+1] = t;
int xx = index[j];
index[j]=index[j+1];
index[j+1] = xx;
}
}
}
for (i=1;i<=9;i++) //0是自身,所以从1开始
{
int xx = index[i];
os << a[xx].id << " " << a[xx].x << " " << a[xx].y << endl;
}
os.close();
return 0;
}