ADV-230-三角形

来源:互联网 发布:手机解压软件苹果 编辑:程序博客网 时间:2024/05/22 06:44
问题描述
  为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体。分别设计独立的函数计算三角形的周长、面积、中心和重心。输入三个点,输出这三个点构成的三角形的周长、面积、外心和重心。结果保留小数点后2位数字。
样例输出
与上面的样例输入对应的输出。
例:
数据规模和约定
  输入数据中每一个数的范围。
  例:doule型表示数据。


C

#include<stdio.h>#include<math.h>typedef struct node{double x;double y;}V;typedef struct Node{V A;V B;V C;}Three;int main(){Three Q;double a,b,c,p,C,S;V O,G;scanf("%lf%lf",&Q.A.x,&Q.A.y);scanf("%lf%lf",&Q.B.x,&Q.B.y);scanf("%lf%lf",&Q.C.x,&Q.C.y);a=sqrt(pow((Q.B.x-Q.C.x),2)+pow((Q.B.y-Q.C.y),2));b=sqrt(pow((Q.A.x-Q.C.x),2)+pow((Q.A.y-Q.C.y),2));c=sqrt(pow((Q.A.x-Q.B.x),2)+pow((Q.A.y-Q.B.y),2));C=a+b+c;printf("%.2f\n",C);p=C/2;S=sqrt(p*(p-a)*(p-b)*(p-c));printf("%.2lf\n",S);O.x=(pow(Q.A.x,2)*(Q.B.y-Q.C.y)+pow(Q.B.x,2)*(Q.C.y-Q.A.y)+pow(Q.C.x,2)*(Q.A.y-Q.B.y)-(Q.A.y-Q.B.y)*(Q.B.y-Q.C.y)*(Q.C.y-Q.A.y))/(2*(Q.A.x*(Q.B.y-Q.C.y)+Q.B.x*(Q.C.y-Q.A.y)+Q.C.x*(Q.A.y-Q.B.y)));O.y=(pow(Q.A.y,2)*(Q.B.x-Q.C.x)+pow(Q.B.y,2)*(Q.C.x-Q.A.x)+pow(Q.C.y,2)*(Q.A.x-Q.B.x)-(Q.A.x-Q.B.x)*(Q.B.x-Q.C.x)*(Q.C.x-Q.A.x))/(2*(Q.A.y*(Q.B.x-Q.C.x)+Q.B.y*(Q.C.x-Q.A.x)+Q.C.y*(Q.A.x-Q.B.x)));printf("%.2lf %.2lf\n",O.x,O.y);G.x=(Q.A.x+Q.B.x+Q.C.x)/3;G.y=(Q.A.y+Q.B.y+Q.C.y)/3;printf("%.2lf %.2lf",G.x,G.y);return 0;}

C++

#include <iostream>#include <math.h>#include <iomanip>using namespace std;struct Spot{double x;double y;}; class Triangle{private :double la;double lb;double lc; public :Triangle(struct Spot,struct Spot,struct Spot);double S();struct Spot G(struct Spot a,struct Spot b,struct Spot c);struct Spot Q(struct Spot a,struct Spot b,struct Spot c);double p;};Triangle::Triangle(struct Spot a,struct Spot b,struct Spot c){la=sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));lb=sqrt(pow(a.x-c.x,2)+pow(a.y-c.y,2));lc=sqrt(pow(b.x-c.x,2)+pow(b.y-c.y,2));p=(la+lb+lc)/2;}double Triangle::S(){return sqrt(p*(p-la)*(p-lb)*(p-lc));}struct Spot Triangle::G(struct Spot a,struct Spot b,struct Spot c){struct Spot g;g.x=(a.x+b.x+c.x)/3;g.y=(a.y+b.y+c.y)/3;return g;}struct Spot Triangle::Q(struct Spot a,struct Spot b,struct Spot c){double A1,B1,C1;double A2,B2,C2;struct Spot q;A1=2*(b.x-a.x);B1=2*(b.y-a.y);C1=pow(b.x,2)+pow(b.y,2)-pow(a.x,2)-pow(a.y,2);A2=2*(c.x-b.x);B2=2*(c.y-b.y);C2=pow(c.x,2)+pow(c.y,2)-pow(b.x,2)-pow(b.y,2);q.x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));q.y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));return q;}int main(){struct Spot a,b,c,g,q;cin>>a.x;cin>>a.y;cin>>b.x;cin>>b.y;cin>>c.x;cin>>c.y;Triangle T(a,b,c);g=T.G(a,b,c);q=T.Q(a,b,c);cout<<setprecision(2)<<std::fixed<<T.p*2<<endl;cout <<setprecision(2) <<std::fixed <<T.S()<<endl;cout<<setprecision(2)<<std::fixed<<q.x<<" "<<q.y<<endl;cout<<setprecision(2)<<std::fixed<<g.x<<" "<<g.y<<endl;return 0;}


原创粉丝点击