2. 圆内五角星

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:51:41
问题背景
如图,一个半径为1的圆周上有5个点。按角度制给出5个点的极角Ai (0<=Ai<360, i=1..5)。按下图的方法连成一个五角星, 计算圆被切割成的11个部分面积的方差。
具体地说, 假定11个区域的面积分别为S1,S2, ..., S11,那么面积的均
计算方法为:
M = (S1+S2+...+S11 ) / 11
面积的方差计算方法为:
D = ((S1-M)2 + (S2-M)2 + ... + (S11-M)2) / 11
输入格式
输入仅一行,包含 5 个 [0,359] 内的互不相等的整数。
注意:连接五角星的方式取决于 5 个点在圆周上的排列顺序,和输入顺序无关。
输出格式
输出仅一行,包含一个实数,即各部分面积的方差。输出保留小数点后4位。
样例输入
0 144 72 288 216
样例输出
0.0144

这是百度之星的考题
没想到真有高手来做这么繁琐的题

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define Pi 3.1415926
void Sidianjiaodian(double *x, double *y, double x1, double y1, double x2,
double y2, double x3, double y3, double x4, double y4) //四点交点坐标
{
//1 3 一条直线,2,4一条
double x_ = ((y1 - y2) - x1 *(y3 - y1) / (x3 - x1) + x2 *(y4 - y2) / (x4 - x2)
) / ((y4 - y2) / (x4 - x2) - (y3 - y1) / (x3 - x1));
double y_ = (x_ - x2)*(y4 - y2) / (x4 - x2) + y2;
*x = x_;
*y = y_;
}

double sandianmianji(double x1, double y1, double x2, double y2, double x3,
double y3) //面积
{
double a = x2 - x1;
double b = y2 - y1;
double c = x3 - x1;
double d = y3 - y1;
return 0.5 *fabs(a *d - b * c);
}

void BubbleSort(int *pData, int Count)
{
int iTemp;
for (int i = 1; i < Count; i++)
{
for (int j = Co