#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Shape {
private:
float width, height;
public:
Shape(float width = 0, float height = 0) {
this->width = width;
this->height = height;
}
friend ostream &operator<< (ostream &os, Shape &s) {
os << s.width << " x " << s.height;
return os;
}
float getWidth() {
return width;
}
float getHeight() {
return height;
}
};
class Triangle: public Shape {
private:
public:
Triangle(float width = 0, float height = 0):Shape(width, height) {
}
float area() {
return 0.5 * getWidth() * getHeight();
}
};
class Rectangle: public Shape {
private:
public:
Rectangle(float width = 0, float height = 0):Shape(width, height) {
}
float area() {
return getWidth() * getHeight();
}
};
int main () {
Triangle tamgiac(4,3);
Rectangle chunhat(5,6);
cout << "> Tam giac kich thuoc " << tamgiac << ". Co dien tich " << tamgiac.area();
cout << "\n> Hinh chu nhat kich thuoc " << chunhat << ". Co dien tich " << chunhat.area();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFNoYXBlIHsKcHJpdmF0ZToKCWZsb2F0IHdpZHRoLCBoZWlnaHQ7CnB1YmxpYzoKCVNoYXBlKGZsb2F0IHdpZHRoID0gMCwgZmxvYXQgaGVpZ2h0ID0gMCkgewoJCXRoaXMtPndpZHRoID0gd2lkdGg7CgkJdGhpcy0+aGVpZ2h0ID0gaGVpZ2h0OwoJfQoJZnJpZW5kIG9zdHJlYW0gJm9wZXJhdG9yPDwgKG9zdHJlYW0gJm9zLCBTaGFwZSAmcykgewoJCW9zIDw8IHMud2lkdGggPDwgIiB4ICIgPDwgcy5oZWlnaHQ7CgoJCXJldHVybiBvczsKCX0KCWZsb2F0IGdldFdpZHRoKCkgewoJCXJldHVybiB3aWR0aDsKCX0KCWZsb2F0IGdldEhlaWdodCgpIHsKCQlyZXR1cm4gaGVpZ2h0OwoJfQp9OwpjbGFzcyBUcmlhbmdsZTogcHVibGljIFNoYXBlIHsKcHJpdmF0ZToKcHVibGljOgoJVHJpYW5nbGUoZmxvYXQgd2lkdGggPSAwLCBmbG9hdCBoZWlnaHQgPSAwKTpTaGFwZSh3aWR0aCwgaGVpZ2h0KSB7Cgl9CglmbG9hdCBhcmVhKCkgewoJCXJldHVybiAwLjUgKiBnZXRXaWR0aCgpICogZ2V0SGVpZ2h0KCk7Cgl9Cn07CmNsYXNzIFJlY3RhbmdsZTogcHVibGljIFNoYXBlIHsKcHJpdmF0ZToKcHVibGljOgoJUmVjdGFuZ2xlKGZsb2F0IHdpZHRoID0gMCwgZmxvYXQgaGVpZ2h0ID0gMCk6U2hhcGUod2lkdGgsIGhlaWdodCkgewoJfQoJZmxvYXQgYXJlYSgpIHsKCQlyZXR1cm4gZ2V0V2lkdGgoKSAqIGdldEhlaWdodCgpOwoJfQp9OwoKaW50IG1haW4gKCkgewoJVHJpYW5nbGUgdGFtZ2lhYyg0LDMpOwoJUmVjdGFuZ2xlIGNodW5oYXQoNSw2KTsKCgljb3V0IDw8ICI+IFRhbSBnaWFjIGtpY2ggdGh1b2MgIiA8PCB0YW1naWFjIDw8ICIuIENvIGRpZW4gdGljaCAiIDw8IHRhbWdpYWMuYXJlYSgpOwoJY291dCA8PCAiXG4+IEhpbmggY2h1IG5oYXQga2ljaCB0aHVvYyAiIDw8IGNodW5oYXQgPDwgIi4gQ28gZGllbiB0aWNoICIgPDwgY2h1bmhhdC5hcmVhKCk7CgoJcmV0dXJuIDA7Cn0=