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]+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[b],y[b],x[d],y[d],S);

}

}

//凹四边形

void AoArea01122330()

{

double S = fabs(x[0]*y[1]-x[1]*y[0]+x[1]*y[2]-x[2]*y[1]+x[2]*y[3]-x[3]*y[2]+x[3]*y[0]-x[0]*y[3])/2;

printf("凹四边形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)

面积S=%lf

",

x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3],S);

}

void AoArea01133220()

{

double S = fabs(x[0]*y[1]-x[1]*y[0]+x[1]*y[3]-x[3]*y[1]+x[3]*y[2]-x[2]*y[3]+x[2]*y[0]-x[0]*y[2])/2;

printf("凹四边形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)

面积S=%lf

",

x[0],y[0],x[1],y[1],x[3],y[3],x[2],y[2],S);

}

void AoArea02211330()

{

double S = fabs(x[0]*y[2]-x[2]*y[0]+x[2]*y[1]-x[1]*y[2]+x[1]*y[3]-x[3]*y[1]+x[3]*y[0]-x[0]*y[3])/2;

printf("凹四边形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)

面积S=%lf

",

x[0],y[0],x[2],y[2],x[1],y[1],x[3],y[3],S);

}

//凸四边形

void Area01122330()

{

double S = fabs(x[0]*y[1]-x[1]*y[0]+x[1]*y[2]-x[2]*y[1]+x[2]*y[3]-x[3]*y[2]+x[3]*y[0]-x[0]*y[3])/2;

printf("凸四边形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)

面积S=%lf

",

x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3],S);

}

void Area01133220()

{

double S = fabs(x[0]*y[1]-x[1]*y[0]+x[1]*y[3]-x[3]*y[1]+x[3]*y[2]-x[2]*y[3]+x[2]*y[0]-x[0]*y[2])/2;

printf("凸四边形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)

面积S=%lf

",

x[0],y[0],x[1],y[1],x[3],y[3],x[2],y[2],S);

}

void Area02211330()

{

double S = fabs(x[0]*y[2]-x[2]*y[0]+x[2]*y[1]-x[1]*y[2]+x[1]*y[3]-x[3]*y[1]+x[3]*y[0]-x[0]*y[3])/2;

printf("凸四边形(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)(%5.2lf,%5.2lf)

面积S=%lf

",

x[0],y[0],x[2],y[2],x[1],y[1],x[3],y[3],S);

}

int CheckInput()

{

//判断输入的4个点是不同的四个点

if((fabs(x[0]-x[1])

(fabs(x[0]-x[2])

(fabs(x[0]-x[3])

(fabs(x[1]-x[2])

(fabs(x[1]-x[3])

(fabs(x[2]-x[3])

return 0;

return 1;

}

//判断是否是凸四边形 0123

int Check01122330(double *D, double *E)

{

if(D[0]*E[0]>0 && D[2]*E[2]>0 && D[3]*E[3]>0 && D[5]*E[5]>0)

return 1;

else

return 0;

}

//判断是否是凸四边形 0132

int Check01133220(double *D, double *E)

{

if(D[0]*E[0]>0 && D[1]*E[1]>0 && D[4]*E[4]>0 && D[5]*E[5]>0)

return 1;

else

return 0;

}

//判断是否是凸四边形 0213

int Check02211330(double *D, double *E)

{

if(D[1]*E[1]>0 && D[2]*E[2]>0 && D[3]*E[3]>0 && D[4]*E[4]>0)

return 1;

else

return 0;

}

void Calculate(int p, double *A, double *B, double *C, double *D, double *E)

{

int p1=pos[p][0];

int p2=pos[p][1];

int p3=pos[p][2];

int p4=pos[p][3];

if(fabs(y[p2]-y[p1])

{

*A = 0.0;

*B = 1.0;

*C = -y[p1];

}

else if(fabs(x[p2]-x[p1])

{

*A = 1.0;

*B = 0.0;

*C = -x[p1];

}

else

{

double t=(x[p2]-x[p1])/(y[p2]-y[p1]);

*A = 1.0;

*B = -t;

*C = t*y[p1]-x[p1];

}

*D = *A * x[p3] + *B * y[p3] + *C;

*E = *A * x[p4] + *B * y[p4] + *C;

}

int main()

{

double t;

int i,ii;

do

{

for(i=0;i<4;i++)

{

printf("Please Input Point %d(x,y):", i+1);

scanf("%lf,%lf", &x[i],&y[i]);

}

}while(CheckInput()==0);//检查输入的是4个不同的点

for(i=0;i<6;i++)

{

Calculate(i,&A[i],&B[i],&C[i],&D[i],&E[i]);

printf("(%s)A=%5.2lfB=%5.2lfC=%5.2lfD=%5.2lfE=%5.2lf

", str[i], A[i], B[i], C[i], D[i], E[i]);

}

//判断4点共线

if(fabs(D[0])

{

printf("四点共线,面积为零

");

return 0;

}

//判断3点共线

if(fabs(D[0])

{

//0,1,2三点共线

TriangleArea(0,1,2,3);

return 0;

}

else if(fabs(E[0])

{

//0,1,3三点共线

TriangleArea(0,1,3,2);

return 0;

}

else if(fabs(E[1])

{

//0,2,3三点共线

TriangleArea(0,2,3,1);

return 0;

}

else if(fabs(E[3])

{

//1,2,3三点共线

TriangleArea(1,2,3,0);

return 0;

}

//四边形

if(Check01122330(D,E)==0 && Check01133220(D,E)==0 && Check02211330(D,E)==0)

{

//凹四边形

AoArea01122330();

AoArea01133220();

AoArea02211330();

}

else if(Check01122330(D,E)==1)

{

//凸四边形

Area01122330();

}

else if(Check01133220(D,E)==1)

{

//凸四边形

Area01133220();

}

else if(Check02211330(D,E)==1)

{

//凸四边形

Area02211330();

}

return 0;

}

#include

void main()

{

printf ("请输入四点坐标:");

int a[4][2];

for(int i=0;i<4;i++)

{

scanf("%d %d",a[i][0],a[i][1]); //输入坐标值

}

if(a[0][0]=[1][0]=[2][0]=[3][0] ||a[0][1]=[1][1]=[2][1]=[3][1] )

printf("这不是一个四边形");

//计算面积

//分成两个三角形的面积计算 ,应该很简单计算三角形面积

}

自己做吧,我只能做到这了。 练习还是要自己尝试的

楼主,你把公式写错了,正确的应该是S = sqrt((s-a)*(s-b)*(s-c)*(s-d) - a*b*c*d*cosα*cosα);

代码我写好了,通过测试,结果正确

#include

#include

#define PI 3.1415926

double area(double a, double b, double c, double d, double theta)

{

double S,s;

s = (a + b + c + d) / 2;

S = sqrt((s - a) * (s - b) * (s - c) * (s - d)

- a * b * c * d * pow(cos(PI * theta / 360),2));

return S;

}

int main()

{

double a, b, c, d, theta, s;

printf("请依次输入四条边和theta的值:");

scanf("%lf %lf %lf %lf %lf", &a, &b, &c, &d, &theta);

s = (a + b + c + d) / 2;

while((s - a) * (s - b) * (s - c) * (s - d)

- a * b * c * d * pow(cos(PI * theta / 360),2) < 0)

{

printf("invalid input!

");

printf("请重新输入:");

scanf("%lf %lf %lf %lf %lf", &a, &b, &c, &d, &theta);

}

printf("四边形面积为: %.4lf

", area(a, b, c, d, theta));

return 0;

}

#include "math.h"

#include

int f(int a,int b,int c,int d,double jiaodu)

{

double s=(double)(a+b+c+d)/2;

double S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*cos(jiaodu/3.14));

return S;

}

int main()

{

cout<

}

C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?

: C语言编程题:任意输入4个点,求围成四边形的面积是多少.代码如下:#include "stdio.h"#include "math.h"void main(){double x[4],y[4];for(int i=0;i 评论0 0 0

C语言编程题 题目:任意输入4个点,求围成四边形的面积_

: 算法说明:// 凸四边形任意一条边的两个顶点位于另外两个顶点所在直线的同一侧// 凹四边形有两条边的两个顶点位于另外两个顶点所在直线的两侧// 四个点(0,1,2,3)围成4边形可能的顺序有3种情况:0123 0213 0132//#include#...

求助c语言程序:给出四个点,求其组成的四边形或三角形的面积???望高手解答,好的我积分全给你!!!!!!!

: #include#includefloat chaoge(float ax,float ay,float bx,float by,float dx,float dy);void main(){ float ax,ay,bx,by,cx,cy,dx,dy,s1,s2,s; cout<>ax>>ay; cout<<...>

C语言编程,给4个坐标求围成图形面积.. 有4种情况1:三个坐标一条直线,2:4坐标一条直线 3:凹四边形 4:凸四边形 急用啊~~~~

: #include"stdio.h"#include"stdlib.h"#include"match.h"main(){int x1,x2,x3,x4,y1,y2,y3,y4,a,b,c,d,e,f,g,p1,p2,p3,p4,P,s1,s2,s3,s4,S;printf("输入A点坐标:");scanf("%d,%d",&x1,&y1);printf("输入B点坐标:");scanf("%d,%d",...

用c语言编程,输入四个数,判断这四个数据能否组成四边形

: #includeint main(){int a,b,c,d,max;scanf("%d%d%d%d",&a,&b,&c,&d);max=a>b?a:b;if(max2*max)printf("可以构成四边形\n");else printf("不可以构成四边形\n"); return 0;}

如何用C语言判断四边形四个点的位置

: 以不规则四边形为例,我说下思路吧~ 坐标系 x右为大.y上为大1. 定义2个数组a[4] = {x1,...}; b[4] = {y1...};2. 各对数组a和b内的元素进行排序,得到2个大小关系的式子.3. 将 x1 和 y1 的名次相加,后面也是如此,对这4个值进行排序, 最小的为左下角的坐标4. 其余3个点,x的值最小为左上角的坐标5. 剩余2个点的y值,小的为右下角的坐标,大的为右上角的坐标

C语言,输入四个整数,是否组成四边形_

: main() { int flag=0; int a,b,c,d; long sum; scanf("%d,%d,%d,%d",&a,&b,&c,&d); sum=a+b+c+d; flag=((sum-a>a)&&(sum-b>b)&&(sum-c>c)&&(sum-d>d)); if(flag) { if((a==b)&&(b==c)&&(c==d)) printf("正方形或菱形"); else if(((a==b)&&(c==d))...

任意输入四个点坐标

: 在坐标轴上,确定2点之间的距离,可以算出4条边的距离,在确定2条对角线的距离,正方形四条边的距离相等,2条对角线距离相等,就可以确定四点图像了(注意四点连线的顺序,免的出笑话!).

C语言,输入四个整数,是否组成四边形

: 判断是否四点共圆即可编程序:#include int is(int a,int b,int c,int d) { return (a>0&&b>... else if (s/2==a+b||s/2==a+c) { puts("矩形or平行四边形"); } else puts("一般四...

如何用c语言判断四边形四个点的位置,给定6个边长_

: 以不规则四边形为例,我说下思路吧~ 坐标系 x右为大.y上为大定义2个数组a[4] = {x1,...}; b[4] = {y1...};各对数组a和b内的元素进行排序,得到2个大小关系的式子.将 x1 和 y1 的名次相加,后面也是如此,对这4个值进行排序, 最小的为左下角的坐标其余3个点,x的值最小为左上角的坐标剩余2个点的y值,小的为右下角的坐标,大的为右上角的坐标

c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?C语言编程题 题目:任意输入4...相关推荐

  1. c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?...

    C语言编程题:任意输入4个点,求围成四边形的面积是多少.代码如下: #include "stdio.h" #include "math.h" void main ...

  2. java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...

    导航:网站首页 > java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 . 时间:2018-11-8 java编程 1.设计一个求圆的面积和 ...

  3. c++ 求四边形面积和周长_C++中运用类求一个矩形的面积和周长

    题目是这样的:/*定义一个矩形类Rectangle,包含:保护数据成员:doubleLength;//矩形的长doubleWidth;//矩形的宽公有成员函数:doubleArea();//计算矩形的 ...

  4. c++ 求四边形面积和周长_c++-面向对象类的示例-求周长面积,判断体积相等-文件操作和一般操作...

    面向对象编程示例:求周长和面积 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; //圆的周长 double getCircl ...

  5. 【案例 4-7】图形的面积与周长计算程序

    [案例介绍] 案例描述 长方形和圆形都属于几何图形,都有周长和面积,并且它们都有自己的周长和面积计算 公式.使用抽象类的知识设计一个程序,可以计算不同图形的面积和周长. 运行结果 [案例目标] 学会& ...

  6. java中图形类面积、周长以及比较

    在画图软件中,可以画出不同大小或颜色的圆形.矩形等几何图形.几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的.此外还有些不同的特征,比如,圆形都有半径,可以根据半 ...

  7. Java 基础案例园的面积与周长计算程序

    长方形和圆形都输入几何图形,都有周长和面积.设计一个程序可以计算不同图形的面积和周长. 解题思路:1.定义一个抽象类并建立两个抽象方法一个是面积一个是周长 2.创建长方形类继承抽象类方法并且重写方法 ...

  8. [案例4-5]图形的面积与周长计算程序

    案例描述: 长方形和圆形都属于几何图形,都有周长和面积,并且它们都有自己的周长和面积计算公式.使用抽象类的知识设计一个程序,可以计算不同图形的面积和周长. 运行结果: 代码如下: 创建抽象类: /** ...

  9. c语言求圆的面积和周长(c语言求圆的面积和周长,半径为5)

    怎么用c语言计算圆周长和面积 用c语言计算圆周长和面积编程有两种. #include #define PI 3.1415926 int main(){ double r,l,s; printf(&qu ...

最新文章

  1. 它,是一部全网最全的JDK发展历史轨迹图...
  2. proxmoxve打造云桌面_基于PROXMOX VE的家庭NAS搭建方案
  3. 怎么使用python中的字典_Python中字典的使用
  4. spool导出姓名中文乱码_MySQL不同字符集转化标准—7步实现,杜绝乱码!
  5. css 剩余空间,CSS DIV高度撑满剩余空间
  6. [Swust OJ 188]--异面空间(读懂题意很重要)
  7. 研磨设计模式-设计模式的基础-设计模式的学习【思路】
  8. dns域名解析原理及过程
  9. 自动驾驶技术——初学者笔记1:自动驾驶分级
  10. 我国计算机把计算机分为巨型,把计算机分为巨型机大中型机按照什么分的
  11. SEIR传染病模型Netlogo仿真程序
  12. 成就系统实现(四)-测试和总结
  13. direct do造句 sb to_wish to do造句
  14. 中北大学计算机研究生学院,【计算机考研】院校信息-中北大学
  15. 【comsol学习1】-电化学模块学习与运行错误之橙子电池
  16. d3dcompiler_47.dll缺失怎么修复?D3DCompiler_47.dll修复工具下载
  17. k8s.io/client-go@v0.20.2/tools/cache/reflector.go:167: Failed to watch *v1beta1.Ingress: failed to l
  18. MATLAB中复数矩阵的转置、共轭及共轭转置
  19. Echart图表在项目中如何使用?(前后端详细技术讲解)
  20. java实现读取excel表格中的数据,兼容xls和xlsx

热门文章

  1. 一直以来伴随我的一些学习习惯(part2)
  2. HTTP协议响应状态码(301、302、303的区别)
  3. MotoSimEG-VRC软件:机器人工作路径轨迹跟踪功能使用方法
  4. 关于WLAN被禁用,且启动后还是被禁用的问题
  5. 网易游戏如何做到不停服维护?
  6. Java基础看这篇就足够用了(基础知识汇总)
  7. 国际工业自动化技术及装备展(导电滑环应用领域)
  8. EO.WebBrowser使用
  9. 服务器被肉鸡如何解决?
  10. java语言有哪些优点?