c語言多邊形
1. c語言求多邊形周長
#include<stdio.h>
#include<math.h>
typedefstructtagPoint
{
floatx,y;
}Point;
floatleg(Pointp1,Point緩斗p2)
{
returnsqrtf((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
floatcalc(const知態Point*p,intn)
{
floatsum=0.0f;
if(n<=1)return0.0f;
for(inti=0;i<n-1;i++)
{
sum擾猛磨+=leg(p[i],p[i+1]);
}
sum+=leg(p[n-1],p[0]);
returnsum;
}
intmain()
{
Pointp[10];
intn;
scanf("%d",&n);
for(inti=0;i<n;i++)
{
scanf("%f%f",&p[i].x,&p[i].y);
}
printf("%.2f",calc(p,n));
return0;
}
2. 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;
}
3. 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;
}
4. 用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;
}
5. C語言實現多邊形填充
/*直角三角形,輸入行數,輸出*/
#include <stdio.h>
void main()/*如果TC編譯不通過,則去掉void*/
{
int n;
scanf("%d",&n);
for (int i = 1;i <= n;i++)
{
for (int j = 0;j < i;j++)
printf("*");
printf("\n");
}
}
/*等腰三角形,輸入行數,輸出*/
#include <stdio.h>
void main()/*如果TC編譯不通過,則去掉void*/
{
int n;
scanf("%d",&n);
for (int i = 1;i <= n;i++)
{
for (int k = 1;k <= n-i;k++)
printf(" ");
for (int j = 0;j < 2*i-1;j++)
printf("*");
printf("\n");
}
}
以上在VS2005上編譯通過