点,方和立方程序帮助C ++

时间:2015-03-11 20:12:41

标签: c++ class point

我一直在为CS类编写一个程序,它应该从用户那里得到X和Y坐标,以及一个正方形的长度和立方体的高度,然后它应该计算出它的面积。正方形和立方体的表面积和体积(加上一些坐标,但现在这不是一个紧迫的问题)

我已经编写了测试文件并且编译成功了,但是我已经得到了很明显错误的方形和立方体属性的很长的答案。任何人都可以指出我可能遇到的任何逻辑错误,或者我是否有错误的访问规范和关系?

Point.h

class Point
{
protected:
    double Xint, Yint;
public:
    Point();
    void setX(double);
    void setY(double);
    double getX() const;
    double getY() const;
};

Point.ccp

Point::Point()
{
    Xint = 0;
    Yint = 0;
}

void Point::setX(double x)
{ Xint = x; }

void Point::setY(double y)
{ Yint = y; }

double Point::getX() const
{ return Xint; }

double Point::getY() const
{ return Yint; }

Square.h

#include "Point.h"
class Square : public Point
{
protected:
    Point lowerLeft;
    double sideLength;
public:
    Square(double sideLength, double x, double y) : Point()
    {
        sideLength = 0.0;
        x = 0.0;
        y = 0.0;
    }
    void setLowerLeft(double, double);
    void setSideLength(double);
    double getSideLength() const;
    double getSquareArea() const;
};

Square.ccp

#include "Square.h"
void Square::setLowerLeft(double x, double y)
{
    lowerLeft.setX(x);
    lowerLeft.setY(y);
}

void Square::setSideLength(double SL)
{ sideLength = SL; }

double Square::getSideLength() const
{ return sideLength; }

// Calculate the area of square
double Square::getSquareArea() const
{ return sideLength * sideLength; }

Cube.h

#include "Square.h"
class Cube : public Square
{
protected:
    double height;
    double volume;
public:
    Cube(double height, double volume) : Square(sideLength, Xint, Yint)
    {
        height = 0.0;
        volume = 0.0;
    }
    double getSurfaceArea() const;
    double getVolume() const;
};

Cube.ccp

#include "Cube.h"

// Redefine GetSquareArea to calculate the cube's surface area
double Cube::getSurfaceArea() const
{ return Square::getSquareArea() * 6; }

// Calculate the volume
double Cube::getVolume() const
{ return getSquareArea() * height; }

1 个答案:

答案 0 :(得分:0)

  

"任何人都可以指出我可能遇到的任何逻辑错误,或者我是否有错误的访问规范和关系?"

嗯,从我们众所周知的三维几何中,立方体由6个正方形组成。

那么您认为从Cube继承Square类实际上应该如何运作呢?

您可以通过固定Cube(例如上,左,前角)和边长的固定大小轻松定义Point类。

如果你真的想要和需要,你可以为你的Cube类添加一个便利函数,它返回它在3维空间中包含的所有6 Squares

 class Cube {
 public:
     Cube(const Point& upperLeftFrontCorner, double edgeLength);
     std::array<Square,6> getSides() const;
 };