c++基础语法综合题

img

代码如下,如有帮助,请帮忙采纳一下,谢谢。

代码:

#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;

}