输入三角形的三边长求三角形的面积

编程题

img

你的图片与标题是不是不太符合,你是要求三角形面积还是求图中的题目,如果是求图中的题目,你的图片拍的也模糊,题目看不清楚
这里我先给你求三角形的面积

#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;
}