重载函数如何区分输入的梯形三个变量和三角形的三边。

重载函数如何区分输入的梯形三个变量和三角形的三边。

问题描述:

double area(double a,double b,double h)
{
return (a+b)*h/2;
}
double area(double a,double b,double c,int)
{
return (1/4)*sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a));
}

这个输入三角形三边只会返回梯形的面积公式答案,无法到三角形公式,
求解答。
原代码:
#include"iostream"
#include"math.h"
using namespace std;

double area (double r);
double area(double a,double b);
double area(double a,double b,double h);
double area(double a,double b,double c,int);

int main()
{
double a=0,b=0,h=0,c=0,r=0,s1,s2,s3,s4;
int x;
cout<<"请输入需要计算的图形代码:圆的面积:1,矩形:2,梯形:3,三角形:4" < cin>>x;
if(x==1){
cout<<"请输入圆的半径r:";
cin>>r;
s1=area(r);
cout<<"圆的面积s1="< }
if(x==2){
cout cin>>a>>b;
s2=area(a,b);
cout<<"矩形的面积s2="< }
if(x==3){
cout cin>>a>>b>>h;
s3=area(a,b,h);
cout<<"梯形的面积s3="< }
if(x==4){
cout cin>>a>>b>>c;
s4=area(a,b,c,1);
cout<<"三角形的面积s4="<<s4<<endl;
}
return 0;
}
double area (double r)
{
return 3.14*r*r;
}
double area(double a,double b)
{
return a*b;
}
double area(double a,double b,double h)
{
return (a+b)*h/2;
}
double area(double a,double b,double c,int)
{
return (1/4)*sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a));
}

调用下面的时候,用
area(a,b,c,100);
随便传一个整数