请指正一下。问题有点多。

#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<
double area2(){return area1()*h;}
};
void main()
{ triangle t1;
t1.input();
cout<
three t2;
t2.input();
cout<
}

img

你的代码存在2个问题:

  1. 面向对象编程语法不对;
  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;
}