编程题
你的图片与标题是不是不太符合,你是要求三角形面积还是求图中的题目,如果是求图中的题目,你的图片拍的也模糊,题目看不清楚
这里我先给你求三角形的面积
#include<iostream>
#include"math.h"
using namespace std;
int main(){
int a,b,c;
int max;
float area;
cout<<"输入a边长"<<endl;
cin>>a;
cout<<"输入b边长"<<endl;
cin>>b;
cout<<"输入c边长"<<endl;
cin>>c;
if(a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b){ //先判断是否为直角三角形
cout<<"直角三角形"<<endl;
if(a*a+b*b==c*c){
//满足此条件时c是斜边
area=0.5*a*b;
}
else if(b*b+c*c==a*a){
//满足此条件时a是斜边
area=0.5*b*c;
}
else if(a*a+c*c==b*b){
//满足此条件时b是斜边
area=0.5*a*c;
}
cout<<"三角形面积:"<<area<<endl;
}
else{ //如果不是直角三角形
//先求出长边 ,并使用一个数组对三边进行排序,使得长边位于数组的最后一位,以便接下来的操作
int arr[3];
float x=0.01;
float height;
max=a; arr[0]=b; arr[1]=c; arr[2]=a;
if(b>max) {
max=b;
arr[2]=b;
arr[1]=c;
arr[0]=a;
}
if(c>max) {
max=c;
arr[2]=c;
arr[1]=a;
arr[0]=b;
}
while(1){
//设定误差值0.1,垂直于长边的高h,设x为a边投影到c边上长度,那么,(c-x)则为b边投影到c上的长度
//满足a^2-x^2 = b^2-(c-x)^2时,x点即为三角形高所在的位置
if((arr[0]*arr[0]-x*x)-(arr[1]*arr[1]-(arr[2]-x)*(arr[2]-x))<=0.1){
height=sqrt(arr[0]*arr[0]-x*x);
area=0.5*arr[2]*height;
cout<<"高等于:"<<height<<endl;
cout<<"三角形面积:"<<area<<endl;
break;
}
x+=0.01;
//如果x大于c边长,则认为输入的三边边长无法构成三角形
if(x>(float)arr[2]){
cout<<"a="<<arr[0]<<" b="<<arr[1]<<" c="<<arr[2]<<endl;
cout<<"输入的三边边长无法构成三角形"<<endl;
break;
}
}
}
return 0;
}