演算法提高 12-1三角形
阿新 • • 發佈:2018-12-22
演算法提高 12-1三角形
時間限制:1.0s 記憶體限制:256.0MB
問題描述
為二維空間中的點設計一個結構體,在此基礎上為三角形設計一個結構體。分別設計獨立的函式計算三角形的周長、面積、中心和重心。輸入三個點,輸出這三個點構成的三角形的周長、面積、外心和重心。結果保留小數點後2位數字。
樣例輸出
與上面的樣例輸入對應的輸出。
例:
資料規模和約定
輸入資料中每一個數的範圍。
例:doule型表示資料
#include <iostream> #include <math.h> #include <cstdio> using namespace std; typedef struct Dot{ double x,y; }D; typedef struct Triangle{ D d[3]; double l[3]; }T; int main(int argc, char *argv[]) { T t; for(int i=0;i<3;i++){ cin>>t.d[i].x>>t.d[i].y; } double len=0; for(int i=0;i<2;i++){ t.l[i]=sqrt(pow(t.d[i].x-t.d[i+1].x,2)+pow(t.d[i].y-t.d[i+1].y,2)); len+=t.l[i]; } t.l[2]=sqrt(pow(t.d[2].x-t.d[0].x,2)+pow(t.d[2].y-t.d[0].y,2)); len+=t.l[2]; double square=len/2; D wai; wai.x=0; wai.y=0; for(int i=0;i<3;i++){ square*=(len/2-t.l[i]); wai.x+=t.d[i].x; wai.y+=t.d[i].y; } square=sqrt(square); wai.x/=3; wai.y/=3; double a1,b1,c1,a2,b2,c2; D core; a1=2*(t.d[1].x-t.d[0].x); b1=2*(t.d[1].y-t.d[0].y); c1=pow(t.d[1].x,2)+pow(t.d[1].y,2)-pow(t.d[0].x,2)-pow(t.d[0].y,2); a2=2*(t.d[2].x-t.d[1].x); b2=2*(t.d[2].y-t.d[1].y); c2=pow(t.d[2].x,2)+pow(t.d[2].y,2)-pow(t.d[1].x,2)-pow(t.d[1].y,2); core.x=((c1*b2)-(c2*b1))/((a1*b2)-(a2*b1)); core.y=((a1*c2)-(a2*c1))/((a1*b2)-(a2*b1)); printf("%.2lf\n%.2lf\n",len,square); printf("%.2lf %.2lf\n",core.x,core.y); printf("%.2lf %.2lf\n",wai.x,wai.y); return 0; }