❶ 用c语言写计算多边形面积怎麽写啊,在线等待
对于凸对边形,可以切分成n-2个三角形,每个三角形的面积用如下公式求得:
求三角形面积:给出三角形的三个边长为a,b,c,求三角形的面积。
根据海伦公式来计算三角形的面积: S= ;Area=
1.输入的三角形三边长a,b,c要满足“任意两边长的和大于第三边长”。
2.按海伦公式计算:s=(a+b+c)/2;x=s*(s-a)*(s-b)*(s-c) 这时若x>=0,则求面积:area= ,并输出area的值。
C++代码如下:
#include <cmath>
#include <iostream>
using namespace std;
double point[1000000][2],A;
int m;
double det(double x1,double y1,double x2,double y2)
{
return x1*y2-x2*y1;
}
double area()
{
int i;
float temp=0;
for(i=0;i<m-1;i++)
{
temp+=det(point[i][0],point[i][1],point[i+1][0],point[i+1][1]);
}
temp+=det(point[i][0],point[i][1],point[0][0],point[0][1]);
return temp/2;
}
int main()
{
int i;
while (scanf("%d",&m)!=EOF)
{
if (m==0)break;
for (i=0;i<m;i++)
{
cin>>point[i][0]>>point[i][1];
}
printf("%.1f\n",area());
}
return 0;
}
❷ 关于C语言 array的用法 和 多边形面积的问题
定义一个多边形的结构体 假设叫struct A,里面 包括坐标点、面积。
定义1个struct A的数组,算出数组里面每个多边形的面积,假设5个,以下是伪代码。
struct a array[5];
int i;
int j=0
for(i=1;i<5;i++)
{
if(array[i].area > array[j].area) j=i;
}
最后array[j]就是最大的那个,如果要考虑面积相同的情况,也都输出,那就定义数组记录找到的,或者最后输出再查询一遍。
❸ 用C语言编程求多种几何图形及几何体的面积或体积。 功能要求:求各几何图形的面积或体积单独编写成函数
//只写循环体这部分了。。 函数需要的话再说。
int a=1 ; //计数标志
int r , x; // 参数
while(a){
pringf("当输入0时退出。 (1)求扇形面积及周长。 (2)求正5边型面积及周长。 (3)求正6边型面积及周长。 (4)求球冠表面积及体积。 (5)求正4面体的表面积及体积。 (6)求正圆面积及周长") ; //回车略,最好加一下,乱
scanf("%d",&i); //c语言不是很清楚了,是这么写吧
switch(i)
{case 0 : break;
case 1: scanf("%d",&r);; S1(r);L1(r); break; // 扇形面积周长,根据函数名而定
//……(都一样的,略过,球冠是什么?似乎俩参数,然后我就定义了两个)
default break;
}
}
❹ C语言编程求多边形面积, (1)输入任意三点以上坐标,计算此多边形面
输入边数 n, 输入 多边形各顶点 x,y 坐标,逆时针顺序 (保证 叉乘积 为 正)。
各顶点 x,y 坐标 减去 a[0][0]。以 a[0][0] 为主 计算各三角形面积并累加。
#include <stdio.h>
#include <stdlib.h>
main( )
{
int i,j,n;
double s=0;
double a[15][2];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<2;j++)
scanf("%lf",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<2;j++)
a[i][j]=a[i][j]-a[0][0];
for(i=1;i<n-1;i++)
{
s = s + 0.5*(a[i][0]*a[i+1][1]-a[i+1][0]*a[i][1]);
}
printf("%.2lf",s);
return 0;
}
追问
测试数据1 输出错误
错误输出:
1.00
期望输出:
5.00
测试数据2 输出错误
错误输出:
-10000.00
期望输出:
15000.00
测试数据3 输出错误
错误输出:
-1067.50
期望输出:
984.50
测试数据4 输出错误
测试数据5 输出错误
错误输出:
-1000.00
期望输出:
1100.00
都错了啊
追答
// 改正:a[i][j]=a[i][j]-a[0][j];
// 不是 -a[0][0], 是 a[0][j]
#include <stdio.h>
#include <stdlib.h>
main( ){int i,j,n;
double s=0;double a[15][2];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<2;j++)
scanf("%lf",&a[i][j]);
for(i=1;i<n;i++)
for(j=0;j<2;j++)
a[i][j]=a[i][j]-a[0][j];
for(i=1;i<n-1;i++){
s = s + 0.5* ( a[i][0] *a[i+1][1] - a[i+1] [0] * a[i][1] );
}
printf("%.2lf",s);
return 0;
}
❺ 用c语言编写"求任意多边形的面积"
自己去网络微积分的C语言实现,既然是任意多边形肯定是要用微积分的...
❻ c语言求凸多边形面积
输入边数 n, 输入 多边形各顶点 x,y 坐标,逆时针顺序 (保证 叉乘积 为 正)。
各顶点 x,y 坐标 减去 a[0][0]。以 a[0][0] 为主 计算各三角形面积并累加。
#include <stdio.h>
#include <stdlib.h>
main( )
{
int i,j,n;
double s=0;
double a[15][2];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<2;j++)
scanf("%lf",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<2;j++)
a[i][j]=a[i][j]-a[0][0];
for(i=1;i<n-1;i++)
{
s = s + 0.5*(a[i][0]*a[i+1][1]-a[i+1][0]*a[i][1]);
}
printf("%.2lf",s);
return 0;
}
❼ 用c语言求多种图形中任何一种图形的面积。
#include<stdio.h>
#include<math.h>
doubletrianglearea(floata,floatb,floatc);
doublesquarearea(floata,floatb);
doubleroundarea(floatr);
intmain()
{
intindex=0;
floata,b,c,r;
doubleS;
while(1)
{
printf("请输入图的类型,三角形请输入1,矩形请输入2,圆形请输入3。按0退出 ");
printf("请输入图形序号:");
scanf("%d",&index);
if(index==0)
break;
elseif(index==1)
{
printf("输入三角形三边长:");
scanf("%f%f%f",&a,&b,&c);
S=trianglearea(a,b,c);
}
elseif(index==2)
{
printf("输入矩形的长和宽:");
scanf("%f%f",&a,&b);
S=squarearea(a,b);
}
elseif(index==3)
{
printf("%输入圆形的半径:");
scanf("%f",&r);
S=roundarea(r);
}
else
;
printf("所求面积为%lf ",S);
}
printf(" byebye ");
return0;
}
doubletrianglearea(floata,floatb,floatc)
{
doublep=0;
if(!(a+b>c&&a+c>b&&b+c>a))
{
printf("这三条边无法组成三角形。 ");
return0;
}
p=(a+b+c)/2;
returnsqrt(p*(p-a)*(p-b)*(p-c));
}
doublesquarearea(floata,floatb)
{
returna*b;
}
doubleroundarea(floatr)
{
return3.14*r*r;
}
❽ C语言 多边形面积
#include<stdio.h>
doublearea(doublea,doubleb,doublec,doubled,doublee,doublef);
voidmain()
{
intn;
doublex[100],y[100];
while(scanf("%d",&n)==1&&n>=3&&n<=100)
{
inti;
doublesum=0;
for(i=0;i<n;i++)
{scanf("%lf%lf",x+i,y+i);
if(i>=2)
sum+=area(x[0],y[0],x[i-1],y[i-1],x[i],y[i]);
}
printf("%.1lf ",sum/2);
}
}
doublearea(doublea,doubleb,doublec,doubled,doublee,doublef)
{
returna*d+b*e+c*f-d*e-b*c-a*f;
}
❾ 正多边形面积用C语言(不是C++)怎么编
n表示边数,R表示外接圆半径,x表示圆心角,弧度表示
❿ 已知任意一个多边形的各个顶点的坐标,怎么去求该多边形的面积(写下代码和思想--C语言)
当时我在HDU做的时候也卡这,但这其实就是公式问题而已。。。看图