варианты. Варианты заданий к ЛР2. Варианты заданий к лр2 тпо
Скачать 35.82 Kb.
|
Варианты заданий к ЛР2 ТПОЗадания могут быть изменены и адаптированы к работе. При этом не изменять предметную область и не исключать полностью наследование классов (допускается изменить структуру). Допускается также сформулировать собственное задание (или взять собственный готовый проект). Пример задания (минимум): Разработать три класса, которые следует связать между собой, используя наследование: класс Product, который имеет три элемент-данных — имя, цена и вес товара (базовый класс для всех классов); класс Buy, содержащий данные о количестве покупаемого товара в штуках, о цене за весь купленный товар и о весе товара (производный класс для класса Product и базовый класс для класса Check); класс Check, не содержащий никаких элемент-данных. Данный класс должен выводить на экран информацию о товаре и о покупке ( производный класс для класса Buy); Варианты можно выбрать из двух приведенных ниже списков. Варианты: группа 1Вариант 1Создать абстрактный класс Point (точка). На его основе создать классы ColoredPoint и Line. На основе класса Line создать класс ColoredLine и класс PolyLine (многоугольник). Все классы должны иметь виртуальные методы установки и получения значений всех координат, а также изменения цвета и получения текущего цвета. Создать класс Picture, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 2Создать абстрактный класс Vehicle. На его основе реализовать классы Car (автомобиль), Bicycle (велосипед) и Lorry (грузовик). Классы должны иметь возможность задавать и получать параметры средств передвижения (цена, максимальная скорость, год выпуска и т.д.). Наряду с общими полями и методами, каждый класс должен содержать и специфичные для него поля. Создать класс Garage, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 3Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямоугольник), Circle (круг) и Trapezium (трапеция) с возможностью вычисления площади, центра тяжести и периметра. Создать класс Picture, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 4Создать абстрактный класс Number c виртуальными методами, реализующими арифметические операции. На его основе реализовать классы Integer и Real. Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 5Создать абстрактный класс Body. На его основе реализовать классы Parallelepiped (прямоугольный параллелепипед), Cone (конус) и Ball (шар) с возможностью вычисления площади поверхности и объема. Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 6Создать абстрактный класс Currency для работы с денежными суммами. Определить в нем методы перевода в рубли и вывода на экран. На его основе реализовать классы Dollar, Euro и Pound (фунт стерлингов) с возможностью пересчета в центы и пенсы соответственно. Создать класс Purse (кошелек), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода общей суммы, переведенной в рубли, и суммы по каждой из валют. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 7Создать абстрактный класс Triangle (треугольник), задав в нем длину двух сторон, угол между ними, методы вычисления площади и периметра. На его основе создать классы, описывающие равносторонний, равнобедренный и прямоугольный треугольники со своими методами вычисления площади и периметра. Создать класс Picture, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и получения суммарной площади. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 8Создать абстрактный класс Solution (решение) с виртуальными методами вычисления корней уравнения и вывода на экран. На его основе реализовать классы Linear (линейное уравнение) и Square (квадратное уравнение). Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 9Создать абстрактный класс Function (функция) с виртуальными методами вычисления значения функции y = f(x) в заданной точке х и вывода результата на экран. На его основе реализовать классы Ellipse, Hiperbola и Parabola. Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 10Создать абстрактный класс Triad (тройка) с виртуальными методами увеличения на 1. На его основе реализовать классы Date (дата) и Time (время). Создать класс Memories, содержащий массив/параметризованную коллекцию пар (дата-время) объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и выборки самого раннего и самого позднего событий. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 11Описать абстрактный класс Element (элемент логической схемы), задав в нем числовой идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND и OR — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение и сложение соответственно. Создать класс Sсheme (схема), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка и вычисление значений, формируемых на выходах схемы по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 12Описать абстрактный класс Element (элемент логической схемы) задав в нем символьный идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND_NOT и OR_NOT — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение c отрицанием и сложение c отрицанием соответственно. Создать класс Sсheme (схема), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка и вычисление значений, формируемых на выходах схемы по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 13Описать абстрактный класс Trigger (триггер), задав в нем идентификатор и двоичные значения на входах и выходах. На его основе реализовать классы RS и JK, представляющие собой триггеры соответствующего типа. Создать класс Register (регистр), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка, общего сброса и установки значений каждого триггера по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 14Создать абстрактный класс Progression (прогрессия) с виртуальными методами вычисления заданного элемента и суммы прогрессии. На его основе реализовать классы Linear (арифметическая) и Exponential (геометрическая). Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и вывода общей суммы всех прогрессий. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 15Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции. На его основе реализовать классы Fractional (дробное) и LongLong (длинное целое). В классе Fractional вещественное число представляется в виде двух целых, в которых хранятся целая и дробная часть числа соответственно. В классе LongLong длинное целое число хранится в двух целых полях в виде старшей и младшей части. Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и вывода общей суммы всех значений. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 16Создать абстрактный класс Integer (целое) с символьным идентификатором, виртуальными методами, реализующими арифметические операции, и методом вывода на экран. На его основе реализовать классы Decimal (десятичное) и Binary (двоичное). Число представить в виде массива цифр. Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода значений и идентификаторов всех объектов списка и вывода общей суммы всех десятичных значений. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 17Создать абстрактный класс Sorting (сортировка) с идентификатором последовательности, виртуальными методами сортировки, получения суммы и вывода на экран. На его основе реализовать классы Choice (метод выбора) и Quick (быстрая сортировка). Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода идентификаторов и сумм элементов каждого объекта списка, а также вывода общей суммы всех значений. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 18Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции, и методом вывода на экран. На его основе реализовать классы Money (деньги) и Complex (комплексное число). В классе Money денежная сумма представляется в виде двух целых, в которых хранятся рубли и копейки соответственно. При выводе части числа снабжаются словами «руб.» и «коп.». В классе Complex предусмотреть при выводе символ мнимой части (i). Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 19Создать абстрактный класс Worker с полями, задающими фамилию работника, фамилии руководителя и подчиненных и виртуальными методами вывода списка обязанностей и списка подчиненных на экран. На его основе реализовать классы Manager (руководитель проекта), Developer (разработчик) и Coder (младший программист). Создать класс Group (группа), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода всех объектов списка и выборки по фамилии с выводом всего дерева подчиненных. Написать демонстрационную программу, в которой будут использоваться все методы классов. Варианты заданий 2 Вариант № 1 Моделировать структуру предприятия:
Предположим, что все Сотрудники делятся на два типа: Штатный сотрудник Сотрудник по контракту Требуется производить расчет заработной платы: Для Штатного сотрудника может быть установлена премия, тогда зар.плата = оклад + премия Для Сотрудника по контракту зар.плата = оклад для этого выполнить следующие действия: сделать класс Сотрудник абстрактным (abstract) добавить в класс Сотрудник абстрактный метод «рассчитать зарплату» создать классы «Штатный сотрудник» и «Контрактник», унаследовать их от класса Сотрудник в класс Штатный сотрудник добавить свойство «премия» (set) перегрузить метод «рассчитать зарплату» в классах «Штатный сотрудник» и «Контрактник» В один из отделов добавить двух сотрудников по контракту и двух штатных сотрудников. Назначить премии штатным сотрудникам. Используя цикл for рассчитать и вывести на экран зарплату по всем сотрудникам данного отдела. Вариант № 2 Моделировать структуру банка:
Предположим, что все Вклады делятся на два типа: Долгосрочный - начисления процентов по вкладу зависят от суммы (до 10000 – 12%, больше 10000 – 18% годовых) До востребования (6% годовых независимо от суммы вклада) Предполагаем, что проценты по вкладу начисляются каждый месяц. Требуется рассчитывать сумму вклада, по прошествии указанного количества месяцев. для этого выполнить следующие действия: сделать класс Вклад абстрактным (abstract) добавить в класс Вклад абстрактный метод «рассчитать сумму вклада» с параметром «количество месяцев» создать классы «Долгосрочный вклад» и «Вклад до востребования», унаследовать их от класса Вклад перегрузить метод «рассчитать сумму вклада (количество месяцев)» в классах «Долгосрочный вклад» и «Вклад до востребования». В определенный филиал добавить два долгосрочных вклада и три вклада до востребования. Используя цикл for рассчитать и вывести на экран первоначальную сумму и сумму по прошествии трех месяцев каждого вклада данного филиала. Вариант № 3 Моделировать структуру аэропорта:
Предположим, что все Летательные аппараты делятся на два типа: Самолет Вертолет Требуется реализовать процедуру взлета летательного аппарата, реализованную по разному для Самолета и Вертолета. При этом Самолет также отличается от Вертолета наличием свойства «длина полосы разгона». Процедура выводит в текстовом виде примерно следующее: для Самолета: «<название л/а>. Разогреваю двигатели. Прохожу полосу разгона длиной <длина полосы разгона>. Взлетаю. Убираю шасси.» для Вертолета «<название л/а>. Разогреваю двигатели. Взлетаю.» для этого выполнить следующие действия: сделать класс Летательный аппарат абстрактным (abstract) добавить в класс Летательный аппарат абстрактный метод «взлет» создать классы «Самолет» и «Вертолет», унаследовать их от класса Летательный аппарат добавить в класс Самолет свойство «длина полосы разгона» (get, set) перегрузить метод «взлет» в классах «Самолет» и «Вертолет». В определенный аэропорт добавить два самолета и один вертолет. Указать длину полосы разгона для самолетов. Используя цикл for вызвать метод «взлет» у каждого летательного аппарата аэропорта и вывести результаты на экран. Вариант № 4 Моделировать структуру библиотеки:
Предположим, что все Издания делятся на два типа: Книга – отличается наличием резюме (краткого описания) Журнал – отличается наличием множества статей Требуется формировать текстовое описание Издания в виде: для Книги: «Автор: <автор>, год издания: <год издания> название: <название> резюме: <резюме>» для Журнала: «Автор: <автор>, год издания: <год издания> название: <название> статьи: <название статьи 1>, <название статьи 2> … » для этого выполнить следующие действия: сделать класс Издание абстрактным (abstract) добавить в класс Издание абстрактный метод «сформировать описание» создать классы «Книга» и «Журнал», унаследовать их от класса Издание добавить в класс Журнал множественное свойство «названия статей» (get, add) перегрузить метод «сформировать описание» в классах «Книга» и «Журнал». В определенный отдел библиотеки добавить две книги и один журнал. В журнал добавить две статьи. Используя цикл for, сформировать и вывести на экран описание каждого издания данного отдела. Вариант № 5 Моделировать структуру компании сотовой связи:
Предположим, что все Тарифы делятся на два типа: Посекундный. Отличается наличием свойства «стоимость секунды разговора» (get, set). Оплата производится за каждую секунду разговора. Поминутный. Отличается наличием свойства «стоимость минуты разговора» (get, set). Оплата производится за каждую минуту разговора, т.е., например, 20 сек. приравнивается 1 мин. Требуется производить подсчет стоимости разговора указанной длительности (в секундах). для этого выполнить следующие действия: сделать класс Тариф абстрактным (abstract) добавить в класс Тариф абстрактный метод «рассчитать стоимость разговора» с параметром «количество секунд» создать классы «Посекундный тариф» и «Поминутный тариф», унаследовать их от класса Тариф в класс Посекундный тариф добавить свойство «стоимость секунды разговора» (get, set) в класс Поминутный тариф добавить свойство «стоимость минуты разговора» (get, set) перегрузить метод «рассчитать стоимость разговора (количество секунд)» в классах «Посекундный тариф» и «Поминутный тариф». В определенную компанию добавить один поминутный тариф и один посекундный тариф. Указать стоимость минуты и секунды разговора соответственно. Используя цикл for, рассчитать и вывести на экран стоимость разговора продолжительностью 80 секунд для каждого тарифа данной компании. Вариант № 6 Моделировать структуру автосалона:
Предположим, что все Заявки делятся на два типа: Заявки на приобретение со стенда. Заявки на отложенную поставку. Отличается наличием свойства «процент скидки» (get, set), действующей при приобретении автомобиля с отложенной поставкой. Требуется производить подсчет стоимости заказа: Заявка на приобретение со стенда. Стоимость заказа = стоимость автомобиля, указанного в заявке. Заявка на отложенную поставку. Стоимость заказа = стоимость автомобиля, указанного в заявке * (100% - процент скидки). для этого выполнить следующие действия: сделать класс Заявка абстрактным (abstract) добавить в класс Заявка абстрактный метод «рассчитать стоимость заказа» создать классы «Заявка на приобретение со стенда» и «Заявка на отложенную поставку», унаследовать их от класса Заявка в класс Заявка на отложенную поставку добавить свойство «процент скидки» (get, set) перегрузить метод «рассчитать стоимость заказа» в классах «Заявка на приобретение со стенда» и «Заявка на отложенную поставку». На определенный автомобиль оформить две заявки на приобретение со стенда, и одну заявку на отложенную поставку. Для заявки на отложенную поставку указать значение процента скидки. Используя цикл for, рассчитать и вывести на экран стоимость заказа по всем заявкам на данный автомобиль. Вариант № 7 Моделировать структуру музыкальной коллекции:
Предположим, что все Музыкальные произведения делятся на два типа: Песни – отличаются наличием свойств «текст» и «автор текста» Инструментальные произведения – отличаются наличием множественного свойства строкового типа «инструменты-участники» Требуется формировать текстовое описание Музыкального произведения в виде: для Песни: «Название: <название>, продолжительность: <продолжительность> текст: <текст> автор текста: <автор текста>» для Инструментального произведения: «Название: <название>, продолжительность: <продолжительность> инструменты-участники: <инструменты-участники>» для этого выполнить следующие действия: сделать класс Музыкальное произведение абстрактным (abstract) добавить в класс Музыкальное произведение абстрактный метод «сформировать описание» создать классы «Песня» и «Инструментальное произведение», унаследовать их от класса Музыкальное произведение добавить в класс Песня свойства «текст» и «автор текста» (set) добавить в класс Инструментальное произведение свойство «инструменты-участники» (add, remove) перегрузить метод «сформировать описание» в классах «Песня» и «Инструментальное произведение». В определенный альбом добавить две песни и одно инструментальное произведение. Для песен указать тексты песен и их авторов. Для инструментального произведения указать инструменты-участники. Используя цикл for, сформировать и вывести на экран описание каждого музыкального произведения данного альбома. Вариант № 8 Моделировать структуру реестра городского жилья:
Предположим, что все Помещения делятся на два типа: Квартира – отличается наличием множественного свойства строкового типа «ФИО жильцов» Офис – отличается наличием свойств «Название фирмы-владельца», «Вид деятельности» Требуется рассчитывать ежемесячную оплату за помещение по следующим правилам: - для Квартиры: Ежемес. оплата = базовая ежемесячная оплата за кв.м площади * площадь * (1 + кол-во жильцов*0,1) - Для Офиса: Ежемес. оплата = базовая ежемесячная оплата за кв.м площади * площадь * 2 для этого выполнить следующие действия: сделать класс Помещение абстрактным (abstract) добавить в класс Помещение абстрактный метод «рассчитатьЕжемесячнуюОплату» создать классы «Квартира» и «Офис», унаследовать их от класса Помещение добавить в класс Квартира свойство «ФИО жильцов» (add) добавить в класс Офис свойства «название фирмы-владельца» и «вид деятельности» (get, set) перегрузить метод «рассчитатьЕжемесячнуюОплату» в классах «Квартира» и «Офис». В определенное здание добавить две квартиры и один офис. Для квартир указать ФИО жильцов. Для офиса указать название фирмы-владельца и вид деятельности. Используя цикл for, рассчитать и вывести на экран размер ежемесячной оплаты для каждого помещения в данном здании. Вариант № 9 Моделировать структуру зоопарка:
Предположим, что все Животные, живущие в зоопарке, делятся на три типа: Рыбы – отличаются наличием свойства boolean «глубоководная» Птицы – отличаются наличием свойства «скорость полета» Звери – отличается наличием свойства «среда обитания» (н-р, «лес», «степь», «пустыня» и т.п.) Требуется формировать описание животных по следующему правилу: для Рыбы: «Класс: <глубоководная/не глубоководная> рыба, Название: <название>, хищник: <да/нет>» для Птицы: «Класс: птица, Название: <название>, скорость полета: <скорость полета>» для Зверя: «Класс: зверь, Название: <название>, Среда обитания: <среда обитания>» для этого выполнить следующие действия: сделать класс Животное абстрактным (abstract) добавить в класс Животное абстрактный метод «сформировать описание» создать классы «Рыба», «Птица» и «Зверь», унаследовать их от класса Животное добавить в класс Рыба свойство «глубоководная» (set) добавить в класс Птица свойство «скорость полета» (set) добавить в класс Зверь свойство «среда обитания» (set) перегрузить метод «сформировать описание» в классах «Рыба», «Птица» и «Зверь». В определенный зоопарк добавить одну рыбу, одну птицу и одного зверя. Для рыбы указать значение свойства «глубоководная», для птицы – «скорость полета», для зверя – «среда обитания». Используя цикл for, сформировать и вывести на экран описание каждого животного в зоопарке. Вариант № 10 Моделировать структуру автоматизированного банкомата:
Предположим, что все Счета делятся на два типа: обычный льготный Требуется реализовать метод «снять со счета(сумма)» так, чтобы при снятии определенной суммы с Обычного счета дополнительно взималось 5% от указанной суммы, а при снятии с Льготного счета – взимался всего 1%. для этого выполнить следующие действия: сделать класс Счет абстрактным (abstract) в классе Счет сделать абстрактным метод «снять со счета» с параметром «сумма» создать классы «Обычный счет» и «Льготный счет», унаследовать их от класса Счет перегрузить метод «снять со счета(сумма)» в классах «Обычный счет» и «Льготный счет». В определенный банк добавить два обычных счета и два льготных счета и задать значения свойств. Используя цикл for, вывести на экран остаток по каждому счету данного банка, затем снять с каждого счета определенную сумму и снова вывести остаток по каждому счету. Простые задачи 11.Задача Саr Создать базовый класс Саr (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения и изменения мощности. Создать производный класс Lorry (грузовик), характеризуемый также грузоподъемностью кузова. Определить функции переназначения марки и изменения грузоподъемности. 12.Задача Liquid Создать класс Liquid (жидкость), имеющий поля названия и плотности. Определить методы переназначения и изменения плотности. Создать производный класс Alcohol (спирт), имеющий крепость. Из класса Alcohol создать производный класс Beer (пиво), имеющий процент содержания хмеля. Определить методы переназначения и изменения крепости и процента хмеля. 13.Задача Man Создать класс Man (человек), с полями: имя, возраст, пол и вес). Определить методы переназначения имени, изменения возраста и изменения веса. Создать производный класс Student, имеющий поля факультет, курс, группа. Определить методы изменения возраста, веса, перехода на следующий курс, перевода в другую группу. 14.Задача Pair/ Fraction Создать класс Pair (пара чисел); определить методы изменения полей и сравнения пар: пара pi больше пары р2, если (first.pl > first.р2) или (first.pl = first.р2) и (second.pl > second.р2). Определить класс-наследник Fraction с полями: целая часть числа и дробная часть числа. Определить полный набор методов сравнения. 15.Задача Pair/ Rectangle Создать класс Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный класс Rectangle (прямоугольник) с полями-сторонами. Определить методы вычисления периметра и площади прямоугольника. 16.Задача Pair/ RightAngled Создать класс Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный класс RightAngled с полями-катетами. Определить методы вычисления гипотенузы и площади треугольника. 17.Задача Triangle / Equilateral Создать класс Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс Equilateral (равносторонний), имеющий поле площади. Определить метод вычисления площади. 18.Задача Triangle / RightAngled Создать класс Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс RightAngled (прямоугольный), имеющий поле площади. Определить метод вычисления площади. 19.Задача Triad /Triangle Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел. Определить производный класс Triangle с полями-сторонами. Определить методы вычисления углов и площади треугольника. 20.Задача Triad /Date Создать класс Triad (тройка чисел); определить метод сравнения триад (см. Задача Pair/ Fraction). Определить производный класс Date с полями: год, месяц и день. Определить полный набор методов сравнения дат. 21.Задача Triad / Time Создать класс Triad (тройка чисел); определить метод сравнения триад (см. Задача Pair/ Fraction). Определить производный класс Time с полями: час, минута и секунда. Определить полный набор методов сравнения моментов времени. 22.Задача Triad / Date_1 Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить производный класс Date с полями: год, месяц и день. Переопределить методы увеличения полей на 1 и определить метод увеличения даты на n дней. 23.Задача Triad/Time_1 Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить класс-наследник Time с полями: час, минута, секунда. Переопределить методы увеличения полей на 1 и определить методы увеличения на n секунд m минут. 24.Задача Triad/vector3D Создать базовый класс Triad (тройка чисел) с операциями сложения с числом, умножения на число, проверки на равенство. Создать производный класс vector3D, задаваемый тройкой координат. Должны быть реализованы: операция сложения векторов, скалярное произведение векторов. Создать базовый класс Pair (пара целых чисел) с операциями проверки на равенство и перемножения полей. Реализовать операцию вычитания пар по формуле (а, b) - (с, d) = (а - b, с - d). Создать производный класс Rational; определить новые операции сложения (а, b) + (с, d) = (ad + be, bd) и деления (а, b)/ (с, d) = (ad, be); переопределить операцию вычитания (а, b) - (с, d) = = (ad - be, bd). 25.Задача Pair/ Complex Создать класс Pair (пара чисел); определить метод перемножения полей и операцию сложения пар (а, b) + (с, d) = (а + b, с + d). Определить производный класс Complex с полями: действительная и мнимая части числа. Определить методы умножения (а, b) * (с, d) = (ас - bd, ad + be) и вычитания (а, b) - (с, d) -(a-b, c-d). 26.Задача Pair/ Long Создать класс Pair (пара целых чисел); определить методы изменения полей и операцию сложения пар (а, b) + (с, d) = (а + b, с + d). Определить класс-наследник Long с полями: старшая часть числа и младшая часть числа. Переопределить операцию сложения и определить методы умножения и вычитания. 27.Задача Pair/ Money Создать класс Pair (пара целых чисел); определить метод умножения на число и операцию сложения пар (а, Ь) + (с, d) = (а + Ь, с + d). Определить класс-наследник Money с полями: рубли и копейки. Переопределить операцию сложения и определить методы вычитания и деления денежных сумм. |