c语言 请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积相关的知识,希望对你有一定的参考价值。

请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积

提示:目前在计算凸五边形的面积的时候通常是将凸五边形变成为求三个三角形面积之和的问题

参考技术A // 求面积.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <stdio.h>
#include <math.h>
/******************************************
三角形面积函数,形式参数为float num1[5],
float num2[5],返回值为面积之和
*******************************************/
double square(float num1[5],float num2[5])

double side[7],length[3],squ[3];
int i;
for(i=0;i<4;i++) /*两点之间的线段长*/
side[i]=sqrt((num1[i+1]-num1[i])*(num1[i+1]-num1[i])+(num2[i+1]-num2[i])*(num2[i+1]-num2[i]));
side[5]=sqrt((num1[2]-num1[0])*(num1[2]-num1[0])+(num2[2]-num2[0])*(num2[2]-num2[0]));
side[6]=sqrt((num1[4]-num1[2])*(num1[4]-num1[2])+(num2[4]-num2[2])*(num2[4]-num2[2]));
side[4]=sqrt((num1[4]-num1[0])*(num1[4]-num1[0])+(num2[4]-num2[0])*(num2[4]-num2[0]));
length[0]=(side[0]+side[1]+side[5])*1.0/2;
squ[0]=sqrt(length[0]*(length[0]-side[0])*(length[0]-side[1])*(length[0]-side[5])); /*求三角形的面积*/
length[1]=(side[2]+side[3]+side[6])*1.0/2;
squ[1]=sqrt(length[1]*(length[1]-side[2])*(length[1]-side[3])*(length[1]-side[6]));
length[2]=(side[4]+side[5]+side[6])*1.0/2;
squ[2]=sqrt(length[2]*(length[2]-side[4])*(length[2]-side[5])*(length[2]-side[6]));
return (squ[0]+squ[1]+squ[2]); /*返回三角形的面积之和*/

int _tmain(int argc, _TCHAR* argv[])

float num1[5]=0,num2[5]=0;
double square1=0,squ[3]=0;
int i;
printf("please input the points in turn\n");
for(i=0;i<5;i++)

scanf("%f%f",&num1[i],&num2[i]);
printf("%f%f\n",num1[i],num2[i]);

square1=square(num1,num2); /*五边形面积等于三个三角形面积之和*/
printf("%f",square1);

return 0;
本回答被提问者采纳
参考技术B #include<stdio.h>
#include<math.h>
int main()

int n=5;
double a[105],b[105];
double square = 0.0;
for(int i = 1;i <= n;i ++)

double x,y;
scanf("%lf %lf",&x,&y);
a[i] = x;
b[i] = y;
if(i >= 3 && i <= n)

double a1,a2,a3,q;
a1 = sqrt((a[i] - a[i - 1]) * (a[i] - a[i - 1]) + (b[i] - b[i - 1]) * (b[i] - b[i - 1]));
a2 = sqrt((a[i-1] - a[i - 2]) * (a[i-1] - a[i - 2]) + (b[i-1] - b[i - 2]) * (b[i-1] - b[i - 2]));
a3 = sqrt((a[i] - a[i-2]) * (a[i] - a[i-2]) + (b[i] - b[i-2]) * (b[i] - b[i-2]));
q = (a1 + a2 + a3) / 2;
square += sqrt(q * (q - a1) * (q - a2) * (q - a3));


printf("%lf\n",square);
return 0;


这是代码,但是,你输入的是,必须是按照顺序输入的,
逆时针或者顺时针。

求一个C语言实现的种子填充多边形算法程序

求一个C语言实现的种子填充算法程序 要求: 1,用TC调试、要能通过、 2,百度、谷歌里面复制的就不用了哈、那些都不能运行、 3,高手最好能写点注释上去、 4,最后感激你、、、、

参考技术A /*如果是用线填充,程序如下。如果是用点填充需要用到堆栈和系统底层库函数或者用画点函数putpixel()。 下面实例是用扫描线填充长方形,开始要输入长方形的左上顶点坐标和右下顶点坐标以及填充扫描线的间距(>=1),如果间距等于1,就是完全填充(实填充)。 一个完整的c程序如下,程序在win-tc和tc2.0下都调试通过。 */ #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<graphics.h> void draw(int x1,int y1,int x2,int y2,int delta) int nx1,ny1,nx2,ny2; nx1=x1,ny1=y2-delta,nx2=x1+delta,ny2=y2; while((ny1>=y1)&&(nx2<=x2)) line(nx1,ny1,nx2,ny2); ny1-=delta; nx2+=delta; if(nx2>x2) ny2-=nx2-x2; nx2=x2; while(ny1>y1) line(nx1,ny1,nx2,ny2); ny1-=delta; ny2-=delta; nx1+=y1-ny1; ny1=y1; while(nx1<x2) line(nx1,ny1,nx2,ny2); nx1+=delta; ny2-=delta; else nx1+=y1-ny1; ny1=y1; while(nx2<x2) line(nx1,ny1,nx2,ny2); nx2+=delta; nx1+=delta; ny2-=nx2-x2; nx2=x2; while(ny2>y1) line(nx1,ny1,nx2,ny2); ny2-=delta; nx1+=delta; int main(void) int x1,y1,y2,x2,delta; int driver=DETECT,mode; printf("Please input lefttop(x1,y1) and rightbottom(x2,y2) of rectangle and delta:\n"); scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&delta); initgraph (&driver,&mode,"C:\\TC"); /*这里*/ rectangle(x1,y1,x2,y2); draw(x1,y1,x2,y2,delta); gotoxy(1,1); printf("Press any key to exit!"); getch(); closegraph(); return 0; /*说明:将main()函数中的initgraph(&gdriver,&gmode,"");中的""更改为你的TC安装目录,一般tc必须安装在c盘根目录下,所以就是initgraph(&gdriver,&gmode,"C:\\TC");如你的TC安装目录为D盘的Tools目录下的TC目录,那么上述语句改为: initgraph(&gdriver,&gmode,"D:\\Tools\\TC"); 同时保证在D:\\Tools\\TC目录里有文件EGAVGA.BGI,万一不行,将本程序复制到你的TC安装目录下再运行。 */本回答被提问者采纳

以上是关于c语言 请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积的主要内容,如果未能解决你的问题,请参考以下文章

用C语言编写Windows服务程序的五个步骤

已知任意一个多边形的各个顶点的坐标,怎么去求该多边形的面积?(写下代码和思想--C语言)

求一个C语言实现的种子填充多边形算法程序

jquery怎么画五边形 ,每一个顶点有都代表百分比?

计算几何+极角排序+爆llE. Convex

一个多边形给出各点坐标,用c语言求各内角角度