C语言 多边形面积

Python016

C语言 多边形面积,第1张

#include<stdio.h>

double area(double a,double b,double c,double d,double e,double f)

void main()

{

    int n

    double x[100],y[100]

    while(scanf("%d",&n)==1 && n>=3 && n<=100)

    {

        

         int i

         double sum=0

         for(i=0i<ni++)

        {     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\n",sum/2)

    }

}

double area(double a,double b,double c,double d,double e,double f)

{

    return a*d+b*e+c*f-d*e-b*c-a*f

}

输入边数 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=0i<ni++)

for(j=0j<2j++)

scanf("%lf",&a[i][j])

for(i=0i<ni++)

for(j=0j<2j++)

a[i][j]=a[i][j]-a[0][0]

for(i=1i<n-1i++)

{

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=0double a[15][2]

scanf("%d",&n)

for(i=0i<ni++)

for(j=0j<2j++)

scanf("%lf",&a[i][j])

for(i=1i<ni++)

for(j=0j<2j++)

a[i][j]=a[i][j]-a[0][j]

for(i=1i<n-1i++){

s = s + 0.5* ( a[i][0] *a[i+1][1] - a[i+1] [0] * a[i][1] )

}

printf("%.2lf",s)

return 0

}