#include <iostream>
#include <cmath>
using namespace std;
class Cfigure
{
};
class Ctriangle : public Cfigure
{
private:
int side;
double height;
public:
Ctriangle(int s) { side = s; }
double sheight() { return side * sqrt(3) / 2; }
int sside() { return side; }
};
class Crectangle : public Cfigure
{
private:
int sidex;
int sidey;
public:
Crectangle(int x, int y) { sidex = x; sidey = y; }
int field() { return sidex * sidey; }
int ssidex() { return sidex; }
int ssidey() { return sidey; }
};
int main()
{
Ctriangle t(4);
Crectangle r(3,5);
Cfigure *wsk;
wsk = &t; // lub *wsk = t;
//wsk->sside(); // to zadziała, chrzani waść poczytaj co pisze kompilator
((Ctriangle*)wsk)->sside();
wsk = &r; // moment błędu
// wsk->ssidex(); // nie działa, owszem poczytaj co pisze kompilator
((Crectangle*)wsk)->ssidex();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBDZmlndXJlCnsKfTsKIApjbGFzcyBDdHJpYW5nbGUgOiBwdWJsaWMgQ2ZpZ3VyZQp7CnByaXZhdGU6CiAgICBpbnQgc2lkZTsKICAgIGRvdWJsZSBoZWlnaHQ7CnB1YmxpYzoKICAgIEN0cmlhbmdsZShpbnQgcykgeyBzaWRlID0gczsgfQogICAgZG91YmxlIHNoZWlnaHQoKSB7IHJldHVybiBzaWRlICogc3FydCgzKSAvIDI7IH0KICAgIGludCBzc2lkZSgpIHsgcmV0dXJuIHNpZGU7IH0KfTsKIApjbGFzcyBDcmVjdGFuZ2xlIDogcHVibGljIENmaWd1cmUKewpwcml2YXRlOgogICAgaW50IHNpZGV4OwogICAgaW50IHNpZGV5OwpwdWJsaWM6CiAgICBDcmVjdGFuZ2xlKGludCB4LCBpbnQgeSkgeyBzaWRleCA9IHg7IHNpZGV5ID0geTsgfQogICAgaW50IGZpZWxkKCkgeyByZXR1cm4gc2lkZXggKiBzaWRleTsgfQogICAgaW50IHNzaWRleCgpIHsgcmV0dXJuIHNpZGV4OyB9CiAgICBpbnQgc3NpZGV5KCkgeyByZXR1cm4gc2lkZXk7IH0KfTsKIAppbnQgbWFpbigpCnsKCUN0cmlhbmdsZSB0KDQpOwoJQ3JlY3RhbmdsZSByKDMsNSk7CglDZmlndXJlICp3c2s7Cgl3c2sgPSAmdDsgLy8gbHViICp3c2sgPSB0OwoJLy93c2stPnNzaWRlKCk7IC8vIHRvIHphZHppYcWCYSwgY2hyemFuaSB3YcWbxIcgcG9jenl0YWogY28gcGlzemUga29tcGlsYXRvcgoJKChDdHJpYW5nbGUqKXdzayktPnNzaWRlKCk7Cgl3c2sgPSAmcjsgLy8gbW9tZW50IGLFgsSZZHUKCS8vIHdzay0+c3NpZGV4KCk7IC8vIG5pZSBkemlhxYJhLCBvd3N6ZW0gcG9jenl0YWogY28gcGlzemUga29tcGlsYXRvcgoJKChDcmVjdGFuZ2xlKil3c2spLT5zc2lkZXgoKTsKICAgIHJldHVybiAwOwp9