#include
using namespace std;
class triangle
{private:double x;
double y;
double z;
public:triangle(double a,double b,double c)
{x=a;y=b;z=c;}
triangle();
void input()
{cin>>x>>y>>z;}
double area1()
{
if(x+y>z||x+z>y||y+z>x)
{ double s,p;
p=x+y+z;
s=sqrt((p-x)(p-y)(p-z));//海伦公式求三角形面积
return s;
}
else return 0;}
};
class three:public triangle
{private: double h,a,b,c;
public:three(double x,double y,double z,double d):triangle(x,y,z)
{h=d;}
three();
void input(){cout<<h;}
double area2(){return area1()*h;}
};
void main()
{ triangle t1;
t1.input();
cout<<t1.area1();
three t2;
t2.input();
cout<<t2.area2();
}

请指正一下。问题有点多。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
你的代码存在2个问题:
- 面向对象编程语法不对;
- 海伦公式写的不对
我都帮你改了,代码见下方:
- #include <iostream>
- #include <cmath>
- using namespace std;
- class triangle
- {
- protected:
- double x;
- double y;
- double z;
- public:
- triangle();
- ~triangle();
- triangle(double a, double b, double c);
- public:
- void input();
- double area1();
- };
- triangle::triangle()
- {
- }
- triangle::~triangle()
- {
- }
- triangle::triangle(double a, double b, double c)
- {
- x = a;
- y = b;
- z = c;
- }
- void triangle::input()
- {
- cin >> x >> y >> z;
- }
- double triangle::area1()
- {
- if (x + y > z || x + z > y || y + z > x)
- {
- double s, p;
- p = (x + y + z) / 2.0;
- s = sqrt(p * (p - x) * (p - y) * (p - z)); //海伦公式求三角形面积
- return s;
- }
- else
- return 0;
- }
- class three : public triangle
- {
- private:
- double h;
- public:
- three();
- ~three();
- three(double x, double y, double z, double d);
- public:
- void input();
- double area2();
- };
- three::three()
- {
- }
- three::~three()
- {
- }
- three::three(double x, double y, double z, double d) : triangle(x, y, z)
- {
- h = d;
- }
- void three::input()
- {
- triangle::input();
- cin >> h;
- }
- double three::area2() { return area1() * h; }
- int main()
- {
- triangle t1;
- t1.input();
- cout << t1.area1() << endl;
- three t2;
- t2.input();
- cout << t2.area2() << endl;
- return 0;
- }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用