1

非常に難しい課題があります。どんな助けでもいただければ幸いです。

ShapeクラスCircle、Square、およびTriangleを作成して、階層を構築します。これらの派生クラスの場合、デフォルトのコンストラクターと、正しい数のPointオブジェクトを使用して形状を適切に初期化できるコンストラクターを作成します(つまり、CircleにはPointの中心と半径が必要です。Squareには4つのPoint頂点が必要ですが、Triangleには3つのPoint頂点が必要です)。

main()で、次の各インスタンスを1つずつ作成します。半径23の円、辺25の正方形、辺10、20、30の三角形。原点(0,0)になるようにすべてを定義します。 )は各オブジェクト内のどこかにあります。各オブジェクトからの情報を表示します。

main()の下に入るとSquare s(25、Point(0,0));

class Square : public Shape
{
  double sides;
  Point cp;

  public:
  Square() : sides(0) {}
  Square(double side, const Point &center) : sides(side), cp(center){}

  void bbox()
  {
     Point bottomright = cp + Point(sides/2, -sides/2);
     Point topleft = cp + Point(-sides/2, sides/2);
     Point topright = cp + Point(sides/2, sides/2);
     Point bottomleft = cp + Point(-sides/2, -sides/2);

     std::cout << "Square::bounding " << bottomright  << topleft << topright << bottomleft;
  }

  double area() {std::cout << "Square::area "; return (sides * sides);}
  double circumference() {std::cout << "Square::perimeter "; return sides + sides + sides + sides;}

};

クラスが印刷されます

Square::area 625
Square::perimeter 100
Square::bounding (12.5,-12.5)(-12.5,12.5)(12.5,12.5)(-12.5,-12.5)

割り当てが何を求めているかに基づいて、これは正しく見えるのだろうか?

4

1 に答える 1

1

Squareいいえ、そうではありません。要件から、コンストラクターが引数として4ポイントを取る必要があるようです。

Square(const Point& pt1,const Point& pt2,const Point& pt3,const Point& pt4)

正方形には4つのポイント頂点が必要です

右?

于 2012-07-29T03:02:11.447 に答える