1、利用重载函数area(),分别求三角形、矩形、圆形和梯形面积
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
bool pd(double a,double b,double c);
void area(double a,double b,double c);
void area(double l,double k);
void area(double r);
void area(double a,double b,double c,double d);
//三角形成立判断
bool pd(double a,double b,double c)
{
if(a>0&&b>0&&c>0)
{
if((a+b)<=c&&(a+c)<=b&&(a+c)<=b)
return 0;
else
return 1;
}
else
return 0;
}
//三角形面积计算
void area(double a,double b,double c)
{
double l=(a+b+c)/2.0;
double s=sqrt(l*(l-a)*(l-b)*(l-c));
cout<<"三角形的面积为: "<<fixed<<setprecision(2)<<s<<endl;//<<fixed<<setprecision(2)起到保留小数点两位作用
}
//矩形面积计算
void area(double l,double k)
{
double s=l*k;
cout<<"矩形的面积为:"<<fixed<<setprecision(2)<<s<<endl;
}
//圆形面积计算
void area(double r)
{
const double pi=3.14;
double s=pi*r*r;
cout<<"圆形的面积为:"<<fixed<<setprecision(2)<<s<<endl;
}
//梯形面积计算
void area(double a,double b,double c,double d)
{
//梯形拆分成三角形和平行四边形计算
double l=(a+abs(d-b)+c)/2.0;
double s=sqrt(l*(l-a)*(l-abs(d-b))*(l-c));
s += b*(s/abs(d-b));
cout<<"梯形的面积为"<<fixed<<setprecision(2)<<s<<endl;
}
int main()
{
double a,b,c,d,l,k,r,r1,r2,h;
int n;
while(1)//死循环
{
cout<<"请选择你要计算的图形:"<<endl;
cout<<"1-三角形"<<endl;
cout<<"2-矩形"<<endl;
cout<<"3-圆形"<<endl;
cout<<"4-梯形"<<endl;
cout<<"请选择"<<endl;
cin>>n;
if(n>=5)
break;
else
{
switch(n)
{
case 1:
cout<<"请输入三角形的三边:"<<endl;
cin>>a>>b>>c;
if(pd(a,b,c))
area(a,b,c);
else
cout<<"错误不能构成三角形:"<<endl;
break;
case 2:
cout<<"请输入矩形的两边:"<<endl;
cin>>l>>k;
area(l,k);
break;
case 3:
cout<<"请输入圆形的半径:"<<endl;
cin>>r;
area(r);
break;
case 4:
cout<<"请输入梯形的四边(先输入两边,再输入两底):"<<endl;
cin>>a>>b>>c>>d;
area(a,b,c,d);
break;
}
}
}
return 0;
}
C++ 中的格式控制符(输出流操纵算子),在头文件 iomanip 中定义的
使用:cout<<"三角形的面积为: "<<fixed<<setprecision(2)<<s<<endl;
fixed | 以普通小数形式输出浮点数 |
---|---|
scientific | 以科学计数法形式输出浮点数 |
setbase(b) | 设置输出整数时的进制,b=8、10 或 16 |
setw(w) | 指定输出宽度为 w 个字符,或输人字符串时读入 w 个字符 |
setprecision(n) | 设置浮点数的精度为 n。配合fixed或scientific使用,n 是小数点后位数;否则,n是有效位数 |