涓夎褰㈢殑涓夎竟abc姹傞潰绉痗璇█ (涓夎褰笁杈规眰涓夎褰㈤潰绉痗璇█)

问题描述:

三角形计算 设有任意正三角形 ABC,其三条边 BC、CA,AB 上分别有一点 A1、B1、C1, 而且有 AC1=2C1B,BA1=2A1C,CB1=2B1A。编制程序验证由线段 AA1、BB1、 CC1 相交而成的三角形A2B2C2 的面积是正三角形 ABC 的面积的七分之一。

姝f柟褰㈠拰姝d笁瑙掑舰鐨勯潰绉痗璇█,涓夎褰笁杈规眰涓夎褰㈤潰绉痗璇█

使用的方法是:画图的方法使用坐标进行证明。

在运行程序之前需要在https://easyx.cn/网站*载下**easyx并安装

代码:

#include<stdio.h>

#include<math.h>

#include<graphics.h>

#include <Windows.h>

#include <conio.h>

void pint();

void prove();

void main()

{

pint(); /*调用画图函数画出图形*/

prove(); /*调用证明函数进行证明*/

}

void pint()

{

float a;

printf("请输入要给画图的系数:a="); //一般这里输入1

scanf("%f",&a); /*a为一个比例系数,以实现任意正三角形*/

initgraph(500,500); /* 图形方式初始化*/

cleardevice(); /*清屏*/

line(0,0,0,300*a);

line(0,300*a,259.8*a,150*a);

line(259.8*a,150*a,0,0);

line(0,0,173.2*a,200*a);

line(0,300*a,86.6*a,50*a);

line(259.8*a,150*a,0,200*a); /*画出题目要求的各边*/

_getch();//等待按下任意键

closegraph(); /*关闭图形方式*/

}

void prove() /*在证明过程中比例系数a用1便于计算*/

{

float A[]={0,300} , A1[]={86.6,50},

B[]={259.8,150} , B1[]={0,200},

C[]={0,0} , C1[]={173.2,200},

D[2] , D1[2];/*用数组表示各点坐标*/

float x,x1,y,y1,z,SABDD1,DD1,SDD1,e;

printf(" BB1:(y-200)=-50/259.3*x\n CC1:y=200/173.2*x\n D是BB1 和CC1的交点\n so: ");

x=200/(200/173.2+50/259.8);

y=200/173.2*x;

printf("D[]={%7f,%7f}\n",x,y); /*列方程求出BB1,CC1交点D*/

printf(" BB1:(y-200)=-50/259.3*x\n AA1:(y-300)=(300-50)/86.6*x\n D1 BB1和AA1的\n so: ");

x1=100/((300-50)/86.6-50/259.8);

y1=200-50/259.8*x;

printf("D1[]={%7f,%7f}\n",x1,y1);/*列方程求出BB1,AA1交点D1*/

z=sqrt(3);

SABDD1=150*150*z; /*用面积公式求出大三角形面积*/

DD1=sqrt((148.428-37.114)*(148.428-37.114)+(192.857-171.395)*(192.857-171.395)); /*用代数方法算出小三角形边长DD1*/

SDD1=DD1*DD1*z/4; /*用面积公式求出小三角形面积*/

e=SABDD1/SDD1; /*e代表大小面积比*/

printf("%f\n%11f\n%11f\n%11f\n%10f\n",z,SABDD1,DD1,SDD1,e);

if(fabs(e-7)<=0.1) /*将误差限制在0.1以内*/

{ printf("sucess\n"); } /*在误差范围内则得证*/

else

printf("请检查该功能,然后重新执行"); /*超出误差范围则进行人工检查再次证明*/

}