用带参数的宏定义,通过海伦公式求三角形的面积
要求:
海伦公式:s=sqrt(p*(p-a)*(p-b*)(p-c)),其中p=(a+b+c)/2,a,b,c为三角形的三个边。定义两个带参数的宏,一个用来求p,另一个用来求s
题目分析:
首先,题目要求是通过输入三角形的三条边,输出三角形的面积。因为不是任意的三条边都可以构成三角形,所以应该先对输入的三条边进行判断,如果满足任意两条边的和大于第三边,则进行计算;如果不满足,则输出错误。然后,题目要求使用带参数宏定义的方法,所以应该熟悉宏定义的使用(#define 宏名(参数表) 字符串)。
代码:
#define p(a,b,c) (a+b+c)/2 #define s(p,a,b,c) sqrt(p*(p-a)*(p-b)*(p-c)) #include <iostream> #include<math.h> using namespace std; int main(){ double a1,b1,c1; double p1,s1; cout<<"Please input the three side of the triangle:"; cin>>a1>>b1>>c1; if((a1+b1)>c1&&(a1+c1>b1)&&(b1+c1>a1)){ p1=p(a1,b1,c1); s1=s(p1,a1,b1,c1); cout<<"Output:"<<s1<<endl; }else{ cout<<"data error"<<endl; } return 0; }
说明:为了更好的说明带参数宏定义的参数的功能,定义的变量名称和宏定义的参数不同