當前位置:編程學習大全網 - 編程軟體 - 自己模擬6個空間點的坐標,編程實現制作多邊形地圖。求編程代碼

自己模擬6個空間點的坐標,編程實現制作多邊形地圖。求編程代碼

輸入邊數 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;

}

  • 上一篇:計算機為什麽要學離散數學
  • 下一篇:java 中怎麽比較兩個時間相差的秒數
  • copyright 2024編程學習大全網