Вы находитесь на странице: 1из 4

#include <iostream>

#include <cmath>

Using namespace std;

Class Shape {

Public:

Shape(string name) : name(name) {}

Virtual double area() const = 0;

Virtual void printDetails() const {

Cout << «Shape: « << name << endl;

Protected:

String name;

};

Class Triangle : public Shape {

Public:

Triangle(string name, double a, double b, double c) : Shape(name), a(a), b(b), c(c) {}

Double area() const override {

Double s = (a + b + c) / 2;

Return sqrt(s * (s – a) * (s – b) * (s – c));

Void printDetails() const override {

Shape::printDetails();

Cout << «Type: Triangle» << endl;

Cout << «Side lengths: a=» << a << «, b=» << b << «, c=» << c << endl;
}

Protected:

Double a, b, c;

};

Class EquilateralTriangle : public Triangle {

Public:

EquilateralTriangle(string name, double side) : Triangle(name, side, side, side) {}

Void printDetails() const override {

Triangle::printDetails();

Cout << «Type: Equilateral Triangle» << endl;

};

Class Quadrilateral : public Shape {

Public:

Quadrilateral(string name, double a, double b, double c, double d) : Shape(name), a(a), b(b), c(c), d(d)
{}

Virtual double area() const = 0;

Virtual void printDetails() const {

Cout << «Shape: « << name << endl;

Cout << «Type: Quadrilateral» << endl;

Cout << «Side lengths: a=» << a << «, b=» << b << «, c=» << c << «, d=» << d << endl;

Protected:

Double a, b, c, d;

};
Class Rectangle : public Quadrilateral {

Public:

Rectangle(string name, double width, double height) : Quadrilateral(name, width, height, width,
height) {}

Double area() const override {

Return a * b;

Void printDetails() const override {

Quadrilateral::printDetails();

Cout << «Type: Rectangle» << endl;

};

Class Square : public Rectangle {

Public:

Square(string name, double side) : Rectangle(name, side, side) {}

Void printDetails() const override {

Rectangle::printDetails();

Cout << «Type: Square» << endl;

};

Int main() {

EquilateralTriangle equilateralTriangle(«Equilateral Triangle», 5);

Rectangle rectangle(«Rectangle», 4, 6);

Square square(«Square», 3);

equilateralTriangle.printDetails();

cout << «Area of the equilateral triangle: « << equilateralTriangle.area() << endl;
rectangle.printDetails();

cout << «Area of the rectangle: « << rectangle.area() << endl;

square.printDetails();

cout << «Area of the square: « << square.area() << endl;

return 0;

```

Вам также может понравиться