#include #include const double pi = 3.1415926536; class Shape { public: virtual ~Shape () {}; virtual double area () = 0; virtual double diameter () = 0; virtual double circumference () = 0; }; // works on every shape double circumference_to_area (Shape &shape) { return shape.circumference()/shape.area(); } class Circle : public Shape { public: Circle (double r) {radius = r;} virtual double area () { return pi*radius*radius; } virtual double diameter () { return 2*radius; } virtual double circumference () { return 2*pi*radius; } private: double radius; }; class Rectangle : public Shape { public: Rectangle (double aa, double bb) { a = aa; b = bb; } virtual double area () {return a*b;} virtual double diameter () { return sqrt(a*a+b*b); } virtual double circumference () { return 2*(a+b); } private: double a, b; }; int main () { Rectangle unit_square(1.0, 1.0); Circle unit_circle(1.0); Circle unit_area_circle(1.0/sqrt(pi)); std::cout << "Das Verhältnis von Umfang zu Fläche beträgt\n"; std::cout << "Einheitsquadrat: " << circumference_to_area(unit_square) << std::endl; std::cout << "Kreis mit Fläche 1: " << circumference_to_area(unit_area_circle) << std::endl; std::cout << "Einheitskreis: " << circumference_to_area(unit_circle) << std::endl; return 0; }