
4. Варианты заданий:
Создать абстрактный класс Shape с двумя чисто виртуальными методами Area() и Print(). Определить производные классы Square (квадрат), Rectangle (прямоугольник), Triangle (прямоугольный треугольник), Trapezoid (трапеция). Переопределить в них функции так, чтобы Area() подсчитывала и возвращала площадь фигуры, а Print() выводила на экран название фигуры, длины сторон и площадь.
Написать программу, которая запрашивает у пользователя тип объекта, длины сторон фигуры, создает объект заданного пользователем типа (с помощью оператора new), и адрес этого объекта сохраняет в массиве указателей на базовый класс Shape. Ввести таким образом информацию о 10 фигурах, по окончании ввода вывести ее на экран.
Создать абстрактный класс Employee (служащий). Закрытыми данными класса должны быть имя и фамилия служащего; также он должен содержать 2 чисто виртуальные функции: Earnings() и Print(). Определить 3 производных класса:
1. Boss - служащим начисляется еженедельный фиксированный оклад независимо от числа проработанных часов; в классе должна быть переменная для хранения оклада за неделю;
2. CommissionWorker – служащий получает базовую заработную плату плюс комиссионный процент от продаж (заработная плата = базовая зарплата + комиссионные от продажи одного изделия * количество проданных изделий за неделю);
3. HourlyWorker - служащим начисляется почасовая заработная плата за часы, отработанные в основное время. Т.е. должны быть 2 переменные: количество отработанных за неделю часов и плата за час.
В производных классах переопределенная функция Earnings() должна подсчитывать и возвращать зарплату, Print() – выводить на экран должность, имя, фамилию и зарплату служащего.
Написать программу, которая запрашивает ввод информации о сотрудниках: должность, имя, данные по заработной плате. В программе должен создаваться объект соответствующего типа (Boss, CommissionWorker или HourlyWorker - с помощью оператора new), его адрес – сохраняться в массиве указателей на базовый класс (Employee). После ввода информации о 5 сотрудниках вывести ее на экран.
Создать класс Shape. Определить в нем 4 чисто виртуальные функции: Coordinates(), Radius(), Area(), Volume(). Создать производные классы Point (точка), Circle (круг) и Cylinder (цилиндр). Переопределить функции так, чтобы каждая из них выводила на экран тип объекта, а также координаты, радиус, площадь фигуры и объем соответственно.
Написать программу, которая запрашивает тип объекта, его данные (координаты для точки, координаты и радиус для окружности и т.д.), создает объект заданного пользователем типа (с помощью оператора new), и указатель на этот объект сохраняет в массиве указателей на базовый класс Shape. Ввести таким образом информацию о 10 фигурах, по окончании ввода вывести ее на экран. Должно получиться примерно следующее:
Cylinder: (x = 45.9; y = 678.46);
Cylinder: radius = 23.8;
Cylinder: area = 23.8;
Cylinder: volume = 23.8;
Point: (x = -345.0; y = 24.89);
Point: radius = 0;
Point: area = 0;
Point: volume = 0;
4. Создать абстрактный базовый класс с виртуальной функцией - площадь поверхности. Создать производные классы: параллелепипед, тетраэдр, шар со своими функциями площади поверхности. Для проверки определить массив ссылок на абстрактный класс, которым присваиваются адреса различных объектов.
Площадь поверхности параллелепипеда: S=6*x*y. Площадь поверхности шара: S=4*pi* r2. Площадь поверхности тетраэдра: S=a23.
5. Создать абстрактный базовый класс с виртуальной функцией - объем. Создать производные классы: параллелепипед, пирамида, тетраэдр, шар со своими функциями объема. Для проверки определить массив ссылок на абстрактный класс, которым присваиваются адреса различных объектов.
Объем параллелепипеда - V=x*y*z (x,y,z – стороны), пирамиды: V=x*y*h (x,y, - стороны, h - высота), тетраэдра: V= a32/12, где а – длина ребра тетраэдра; шара: V=4p r3/3.
В отчете должны быть: тема, цель, задание, листинг программы (с указанием файла, в котором находится текст программы), выводы.