Demo entry 6783116

1

   

Submitted by anonymous on Jan 30, 2019 at 05:38
Language: C++. Code size: 910 Bytes.

#include <iostream>
#include <cmath>
using namespace std;
struct point
{double x;double y;double z;double weight;
//权重double distance; //距离插值点的距离
};
const int r = 1; //反距离的幂值(0.5到3均可)
int n = 0; //点的个数
point p[50]; //存放离散点
point q; //插值点
void Distance() //计算未知点到所有点的距离
{for(int i = 0; i < n; ++i)p[i].distance = sqrt((q.x-p[i].x)*(q.x-p[i].x) + (q.y-p[i].y) *(q.y-p[i].y));
}
void Weight() //计算权重
{double f = 0;int i = 0;for(i = 0; i < n; ++i)f += pow(1.0 / p[i].distance, r);for(i = 0; i < n; ++i)p[i].weight = pow(1.0 / p[i].distance, r) / f;
}
void Getval() //得到插值点的权重
{q.weight = 0;for(int i = 0; i < n; ++i) q.z += p[i].weight * p[i].z;
}
int main()
{cout << "请输入已知点的个数" << endl;cin >> n;cout << "请输入已知点的坐标" << endl;for(int i = 0; i < n; ++i)cin >> p[i].x >> p[i].y >> p[i].z;cout << "输入目标点的坐标" << endl;cin >> q.x >> q.y;Distance();Weight();Getval();cout << q.z << endl;return 0;
}

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).