实验内容
在上一篇C++ | 已知三角形三边,求三角形的面积 中进一步修改,用函数重载来处理圆和矩形的面积计算
代码段
#include <iostream>
#include <math.h>
using namespace std;
bool Validate(double a, double b, double c);
void CalAndOutputArea(double a, double b, double c);
void CalAndOutputArea(double w, double h);
void CalAndOutputArea(double r);
int main() {
double a, b, c, w, h, r;
int nID;
while(1) {
cout<<"请选择你想计算项目"<<endl;
cout<<"1-三角形"<<endl;
cout<<"2-矩形"<<endl;
cout<<"3-圆形"<<endl;
cout<<"4-退出"<<endl;
cout<<"请选择命令号1-3:";
cin>>nID;
if(nID==4) break;
else {
switch(nID) {
case 1:
cout<<"请输入三角形的三边长度:";
cin>>a>>b>>c;
if(Validate(a, b, c))
CalAndOutputArea(a,b,c);
else
cout<<"错误:不能构成三角形!"<<endl;
break;
case 2:
cout<<"请输入矩形的两边长:";
cin>>w>>h;
CalAndOutputArea(w, h);
break;
case 3:
cout<<"请输入圆形的半径:";
cin>>r;
CalAndOutputArea(r);
break;
}
cout<<"按Enter键继续……";
cin.get();
cin.get();
system("cls");
}
}
return 0;
}
bool Validate(double a, double b, double c) {
if((a>0) && (b>0) && (c>0)) {
if((a+b)<=c) return 0;
if((a+c)<=b) return 0;
if((c+b)<=a) return 0;
return 1;
} else {
return 0;
}
}
void CalAndOutputArea(double a, double b, double c) {
double s = (a+b+c)/2.0;
double area = sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"三角形("<<a<<","<<b<<","<<c<<","<<")的面积是:"<<area<<endl;
}
void CalAndOutputArea(double w, double h) {
double area = w * h;
cout<<"矩形("<<w<<","<<h<<")的面积是:"<<area<<endl;
}
void CalAndOutputArea(double r) {
const double PI = 3.1415926;
double area = PI*r*r;
cout<<"圆形(半径r:"<<r<<")的面积是:"<<area<<endl;
}