❶ 用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做的時候也卡這,但這其實就是公式問題而已。。。看圖