C语言 · 三角形

算法提高 12-1三角形  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体。分别设计独立的函数计算三角形的周长、面积、中心和重心。输入三个点,输出这三个点构成的三角形的周长、面积、外心和重心。结果保留小数点后2位数字。
样例输出
与上面的样例输入对应的输出。
例:
数据规模和约定
  输入数据中每一个数的范围。
  例:doule型表示数据。
 
作者注释:本题不难,只是计算公式要知道——上百度查一下外心,重心,中心的公式咯。
代码如下:
 1 /*
 2 求三角形的外接圆心坐标:O(x,y) 
 3 三角形:a(x1,y1) b(x2,y2) c(x3,y3)
 4 满足:A1*x+B1y=C1;A2*x+B2y=C2; 
 5 根据克拉默法则: 
 6     x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1)); 
 7     y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));  
 8 */ 
 9 /*
10 求三角形的外心的坐标: 
11 满足:A1*x+B1y=C1;A2*x+B2y=C2;
12 根据克拉默法则:
13       x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));
14       y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));
15 */ 
16 #include<stdio.h>
17 #include<math.h>
18 #include<string.h>
19 int x[4],y[4];
20 void zc(){
21     double a=(x[1]-x[2])*(x[1]-x[2])+(y[1]-y[2])*(y[1]-y[2]);
22     double b=(x[2]-x[3])*(x[2]-x[3])+(y[2]-y[3])*(y[2]-y[3]);
23     double c=(x[3]-x[1])*(x[3]-x[1])+(y[3]-y[1])*(y[3]-y[1]);
24     printf("%.2lf
",sqrt(a)+sqrt(b)+sqrt(c));
25 }
26 void mj(){
27     double a=(x[1]-x[2])*(x[1]-x[2])+(y[1]-y[2])*(y[1]-y[2]);
28     double b=(x[2]-x[3])*(x[2]-x[3])+(y[2]-y[3])*(y[2]-y[3]);
29     double c=(x[3]-x[1])*(x[3]-x[1])+(y[3]-y[1])*(y[3]-y[1]);
30     a=sqrt(a);
31     b=sqrt(b);
32     c=sqrt(c);
33     double s=(a+b+c)/2;
34     s=s*(s-a)*(s-b)*(s-c);
35     printf("%.2lf
",sqrt(s));
36 }
37 void waixin(double &a,double &b){
38     double A1=2*(x[2]-x[1]);
39     double B1=2*(y[2]-y[1]);
40     double C1=(x[2]*x[2]+y[2]*y[2]-x[1]*x[1]-y[1]*y[1]);
41     double A2=2*(x[3]-x[2]);
42     double B2=2*(y[3]-y[2]);
43     double C2=x[3]*x[3]+y[3]*y[3]-x[2]*x[2]-y[2]*y[2];
44 
45     a=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));
46     b=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));
47 }
48 void zhongxin(double &c,double &d){
49     c=(x[1]+x[2]+x[3])/3.0;
50     d=(y[1]+y[2]+y[3])/3.0;
51 }
52 main(){
53     for(int i=1;i<=3;i++){
54         scanf("%ld%ld",&x[i],&y[i]);
55     }
56     zc();
57     mj();
58     double a,b;
59     waixin(a,b);
60     printf("%.2lf %.2lf
",a,b);
61     double c,d;
62     zhongxin(c,d);
63     printf("%.2lf %.2lf",c,d);
64 }
原文地址:https://www.cnblogs.com/panweiwei/p/6541244.html