• 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 }
  • 相关阅读:
    方法指针或非指针类型接收器
    error接口
    17、想要回到项目上一版本,或者指定版本时,如何进行操作?
    08、想要找到所有操作记录时,如何操作
    16、不再追踪时,如何实现撤销追踪操作
    1月19日a
    1月18日
    1月20日
    1月25
    1月17日
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6541244.html
Copyright © 2020-2023  润新知