Упражнение 3

Полиморфизъм, абстрактни класове

Задача 1
Да се реализира йерархия от класовете Triangle, Circle и Rectangle с абстрактен базов клас Shape. Двете напълно виртуални функции perimeter (пресмята обиколка) и area (пресмята лице) да се реализират в производните класове (виж лекцията). 

За клас Triangle да се добави:
- конструктор по подразбиране, който конструира равностранен триъгълник със страна 1;
- член-функция за отпечатване на данните за триъгълника;
- член-функция за проверка дали триъгълникът е правоъгълен.

За клас Circle да се добави:
- конструктор по подразбиране, който конструира окръжност с радиус 1;
- член-функция за увеличаване на радиуса с 1.

За клас Rectangle да се добави:
- конструктор по подразбиране, който конструира квадрат със страна 1;
- член-функция за проверка дали правоъгълника е квадрат.

Да се прочете файл с фигури (виж примера),  да се направи полиморфна колекция - вектор с указатели. Към получения вектора да се добави по една фигура от трите вида, конструирана с конструктора по подразбиране. Да се отпечати обиколката и лицето на всяка фигура, в реда на въвеждането.

Да се демонстрират всички написани функции.

Пример:
Вход
T 10 20 10
R 5 10

C 100
C 1
R 20 20
R 10 30
T 3 4 5

 
Примерен  изход
 40 0
30 50
628.319 31415.9
6.28319 3.14159
80 400
80 300
12 6

3 0.433013
6.28319 3.14159
4 1

Примерно решение: 3_1.cpp