C语言 · 三角形

算法提高 12-1三角形  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体。分别设计独立的函数计算三角形的周长、面积、中心和重心。输入三个点,输出这三个点构成的三角形的周长、面积、外心和重心。结果保留小数点后2位数字。
样例输出
与上面的样例输入对应的输出。
例:
C语言  ·  三角形
数据规模和约定
  输入数据中每一个数的范围。
  例:doule型表示数据。
 
作者注释:本题不难,只是计算公式要知道——上百度查一下外心,重心,中心的公式咯。
代码如下:
 /*
求三角形的外接圆心坐标:O(x,y)
三角形:a(x1,y1) b(x2,y2) c(x3,y3)
满足:A1*x+B1y=C1;A2*x+B2y=C2;
根据克拉默法则:
x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));
y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));
*/
/*
求三角形的外心的坐标:
满足:A1*x+B1y=C1;A2*x+B2y=C2;
根据克拉默法则:
x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));
y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));
*/
#include<stdio.h>
#include<math.h>
#include<string.h>
int x[],y[];
void zc(){
double a=(x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]);
double b=(x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]);
double c=(x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]);
printf("%.2lf\n",sqrt(a)+sqrt(b)+sqrt(c));
}
void mj(){
double a=(x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]);
double b=(x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]);
double c=(x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]);
a=sqrt(a);
b=sqrt(b);
c=sqrt(c);
double s=(a+b+c)/;
s=s*(s-a)*(s-b)*(s-c);
printf("%.2lf\n",sqrt(s));
}
void waixin(double &a,double &b){
double A1=*(x[]-x[]);
double B1=*(y[]-y[]);
double C1=(x[]*x[]+y[]*y[]-x[]*x[]-y[]*y[]);
double A2=*(x[]-x[]);
double B2=*(y[]-y[]);
double C2=x[]*x[]+y[]*y[]-x[]*x[]-y[]*y[]; a=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));
b=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));
}
void zhongxin(double &c,double &d){
c=(x[]+x[]+x[])/3.0;
d=(y[]+y[]+y[])/3.0;
}
main(){
for(int i=;i<=;i++){
scanf("%ld%ld",&x[i],&y[i]);
}
zc();
mj();
double a,b;
waixin(a,b);
printf("%.2lf %.2lf\n",a,b);
double c,d;
zhongxin(c,d);
printf("%.2lf %.2lf",c,d);
}
上一篇:2017CCSP总结——失败(铜)


下一篇:android java 设计模式详解 Demo