大家好,欢迎来到IT知识分享网。
C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少? C语言编程题 题目:任意输入4
www.zhiqu.org 时间: 2020-12-07
我测试过了,四点一线,凹四边形,四边形,有两个点共点,都可以,这里使用一条知道N边形N个顶点坐标求N边形的面积的公式,这些情况其实已经可以不考虑,呵呵,自动求
凹四边形情况:
有三点共一线形成三角形的情况:
#include “stdio.h”
#include “math.h”
void main()
{
double x[4],y[4];
for(int i=0;i<4;i++)
{
scanf(“%lf%lf”,&x[i],&y[i]);
}
double mianji=0.0;
for(int ii = 1 ; ii< 4 ; ii++)
{
mianji+=(x[ii-1]*y[ii]-x[ii]*y[ii-1]);
}
mianji+=x[3]*y[0]-x[0]*y[3];
mianji= fabs(0.5*mianji);
printf(“%lf
“,mianji);
}
//
// 算法说明:
// 凸四边形任意一条边的两个顶点位于另外两个顶点所在直线的同一侧
// 凹四边形有两条边的两个顶点位于另外两个顶点所在直线的两侧
// 四个点(0,1,2,3)围成4边形可能的顺序有3种情况:0123 0213 0132
//
#include
#include
#define ESP (1e-6)
double x[4]={0.0},y[4]={0.0};
double A[6],B[6],C[6];//直线方程 Ax+By+C=0
double D[6],E[6];//D、E保存另外两点带入直线方程的值,为零表示点在直线上,符号相同表示位于直线的同一侧
int pos[6][4]={
{0,1,2,3},{0,2,1,3},{0,3,1,2},{1,2,0,3},{1,3,0,2},{2,3,0,1}};//用于数组ABCDEF
char str[6][8]={“0,1,2,3″,”0,2,1,3″,”0,3,1,2″,”1,2,0,3″,”1,3,0,2″,”2,3,0,1”};//用于打印输出
void TriangleArea(int a,int b, int c, int d)
{
double S;
if(((x[a]-x[b])*(x[a]-x[c])<0) || ((y[a]-y[b])*(y[a]-y[c])<0))
{
S = fabs(x[b]*y[c]-y[b]*x[c]+x[c]*y[d]-x[d]*y[c]+x[d]*y[b]-x[b]*y[d]);
printf(“三点(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)共线,三角形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)
面积S=%lf
“,
x[a],y[a],x[b],y[b],x[c],y[c],x[b],y[b],x[c],y[c],x[d],y[d],S);
}
else if(((x[b]-x[a])*(x[b]-x[c])<0) || ((y[b]-y[a])*(y[b]-y[c])<0))
{
S = fabs(x[a]*y[c]-y[a]*x[c]+x[c]*y[d]-x[d]*y[c]+x[d]*y[a]-x[a]*y[d]);
printf(“三点(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)共线,三角形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)
面积S=%lf
“,
x[a],y[a],x[b],y[b],x[c],y[c],x[a],y[a],x[c],y[c],x[d],y[d],S);
}
else if(((x[c]-x[a])*(x[c]-x[b])<0) || ((y[c]-y[a])*(y[c]-y[b])<0))
{
S = fabs(x[a]*y[c]-y[a]*x[c]+x[c]*y[d]-x[d]*y[c]+
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27494.html