Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_Finish_OOP_LISTING.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
343.04 Кб
Скачать

Завдання № 127

Дан клас MasMas (Динамічний двовимірний масив ).У класі передбачити можливість добавлення нових елементів масиву при перевищенні розмірності масиву.

Клас повинен містити конструктор без параметрів ( ініціалізує масив нулями конструктор ініціалізації ( розмірність задається з клавіатури), конструктор копіювання, деструктор, функцію виведення елементів масиву.

Також у класі визначити:

  • функцію, яка повертає добуток від’ємних елементів, які розташовані над головною діагоналю;

  • функцію, яка сортовує масив по-зростанню;

  • функцію, яка сортовує масив по-зменьшенню;

Створити два об’єкта ArAr1 , ArAr2 даного класу. Перший об’єкт ініціалізується конструктором без параметрів, другий – конструктором ініціалізації. Вивести два об’єкта на екран з коментарями ( де який масив)

Створити об’єкт ArAr3 на основі об’єкта ArAr2 даного класу. Вивести об’єкт на екран.

Вивести на екран:

  • добуток від’ємних елементів, які розташовані над головною діагоналю об’єкта ArAr3 ;

  • відсортований об’єкт ArAr1 даного класу по-зростанню;

  • відсортований об’єкт ArAr2 даного класу по-зменьшенню;

ПРАКТИЧНА РОБОТА №2

Тема : Перевантаження операторів. Дружні функції

Слабкий рівень знань ( оцінка задовільно)

ЗАВДАННЯ № 201

Дан следующий класс.

class date

{

char date [9]; // дата хранится в виде строки: mm/dd/yy

public:

// добавьте

конструктор инициализации;

функцию перегрузки оператора +

пользовательские дружественные функции ввода и вывода

функция вывода информации

Создайте для него конструктор инициализации, функцию перегрузки оператора +, пользовательские дружественные функции ввода и вывода.

Создать два объекта даного класа. Вывести их на экран , используя дружественные функции ввода и вывода

Создать объект d3 даного класа сложения двух объектов d1 d2 .Вывести на экран d3

Завдання № 202

Создайте клас Point , который имеет два закрытых члена класса. Соответсвенно написать конструктор инициализации, копирования , функции перегрузки оператора « + », « /». Также добавить дружественную функцию перегрузки оператора >> дружественную функцию перегрузки оператора <<

Создать объект р1 даного класа. На основе его создать объект р2. Вывести на экран эти два объекта , используя дружественные функции ввода и вывода

Создать объект р3 даного класа сложения двух объектов р1 и р2 .Вывести на экран d3

Создать объект р4 даного класа деления двух объектов р3 на р2 .Вывести на экран d4

ЗАВДАННЯ № 203

  1. На основе класса, созданного для преобразования футов в дюймы, напишите пользовательскую дружественную функцию ввода, формирующую строку-пригла-

шение для записи числа футов. Кроме этого, напишите пользовательскую функцию вывода для отображения на экране как числа футов, так и числа дюймов. Включите указанные функции в программу и продемонстрируйте их работоспособность.

class ft__to inches

{

double feet;

double inches;

public:

void set (double f);

{

feet = f;

inches = f * 12;

}

}

ЗАВДАННЯ № 204

(108) Дан наступний клас, покажіть, як додати дружню функцію Іsneg () яка отримує один параметр типу myclass і повертає true, якщо значення num негативно і false - в протилежному випадку

class myclass {

int num;

public:

myclass(int x} { num = x;}

}; 108

ЗАВДАННЯ № 205

Cтворити класи саr(легкова машина) і truck (вантажівка), причому обидва містять в закритій змінної швидкість відповідного транспортного засобу. Використовуючи дружню функцію порівняти їх швидкості. ( 100)

ЗАВДАННЯ № 206

Cтворити класи саr (легкова машина) і truck (вантажівка), причому обидва містять в закритій змінної швидкість відповідного транспортного засобу. Створити функцию sp_greater() , яка являлась би членом классусаr и дружньою классу truck (101)

ЗАВДАННЯ № 207

Створити клас цілих чисел. Визначити оператор "+ +", як функцію-член дружню функцію

ЗАВДАННЯ № 208

Дани два класи Рr1 , Рr2 які використовують загальний принтер. Необхідно знати, коли принтер зайнятий об'єктом одного з цих класів. Створіть функцію Іnuse ( ), яка повертає true, коли принтер зайнятий об'єктом одного з класів і false - в протилежному випадку. Зробіть цю функцію дружньою як класу Рr1 так і класу Рr2. ( 103)

ЗАВДАННЯ № 209

Створити простий клас для рядків strtype, котрий містить сам рядок і її довжину. Коли створюється об'єкт strtype, для зберігання рядка виділяється пам'ять, і початкова довжина рядка встановлюється рівною нулю. Коли об'єкт strtype видаляється, ця пам'ять звільняється.

Створити конструктори ініціалізації, копіювання, деструктор (48)

Використовуючи клас strtype, додайте дружню функцію, яка отримує в якості аргументу вказівник на об'єкт типу strtype і повертає вказівник на рядок. (Таким чином, функція повинна повертати вказівник р). Назвіть цю функцію get_string (). (105)

ЗАВДАННЯ № 210

Створити клас stack, який реалізує стек, який можна використовувати для зберігання символів. Створити два об'єкти s1 і s2 (s2 створюється шляхом привласнення s1). Символи реально розміщуються лише стек s1, але після виконання присвоювання об'єкт s2 також містить символи , які знаходяться в об'єкт s1. Створити конструктори і деструктори (84)

Використовуючи клас stack, напишіть функцію loadstack (), яка б повертала стек, заповнений літерами алфавіту (az). У викликаючій програмі надайте цей стек іншому об'єкту і доведіть, що і в цьому об'єкті знаходиться алфавіт. (Зауваження:. Переконайтеся, що довжина стека достатня для зберігання алфавіту.) (105)

ЗАВДАННЯ № 211

Створити клас цілих чисел. Визначити оператор "+", як функцію-член і "-" - як дружню функцію.

Середній рівень знань ( оцінка добре)

ЗАВДАННЯ № 212

ЗАВДАННЯ № 213

ЗАВДАННЯ № 213

Необходимо перегрузить оператор+ относительно класса так, что правый операнд будет объектом встроенного типа, например, целого, а не объектом того класса, членом которого является оператор-функция. Например, в приведенном ниже примере оператор + перегружается так, что прибавляет целое значение к объекту типа coord:

class coord {

int x, у; // значения координат

public:

добавьте

конструктор инициализации;

конструктор копирования

функцию перегрузки оператора +

функция вывода информации

Создайте для него конструктор инициализации, конструктор копирования, функцию перегрузки оператора +, функцию вывода.

Создать объект d1 даного класа. На основе его создать объект d2. Вывести на экран эти два объекта .Создать объект d3 даного класа сложения двух объектов d1 d2 .Вывести на экран d3 (182)

ЗАВДАННЯ № 214

Необходимо перегрузить операторы= = и &&

class coord {

int x, у; // значения координат

public:

добавьте

конструктор инициализации;

конструктор копирования

функцию перегрузки оператора +

функция вывода информации

Создайте для него конструктор инициализации, конструктор копирования, функцию перегрузки оператора= = и функцию перегрузки оператора && +, функцию вывода.

Создать объект c1 даного класа. На основе его создать объект c2. Вывести на экран эти два объекта . Применить перегрузку операторов= = и &&

Результати вывести на экран d3 (185)

ЗАВДАННЯ № 215

  1. Создается класс inventory (инвентарь), в котором хранится название

какого-то предмета, количество выданных на руки штук и стоимость одной

штуки. В программу для этого класса включить пользовательские функции

ввода и вывода, используя дружественную функцию перегрузки оператора <<

и дружественную функцию перегрузки оператора >>

ЗАВДАННЯ № 216

Необходимо перегрузить оператор инкремента ++

class coord {

int x, у; // значения координат

public:

добавьте

конструктор инициализации;

конструктор копирования

функцию перегрузки оператора +

функция вывода информации

Создайте для него конструктор инициализации, конструктор копирования, функцию перегрузки оператора ++, функцию вывода.

Создать объект c1 даного класа. На основе его создать объект c2. Вывести на экран эти два объекта . Применить перегрузку оператора++

Результати вывести на экран (186)

ЗАВДАННЯ № 217

Перегрузите оператор + относительно класса coord так, чтобы он был как бинарным (как было показано ранее), так и унарным оператором. При использовании в качестве унарного оператор + должен делать положительным значение любой отрицательной координаты.

class coord {

int x, у; // значения координат

public:

добавьте

конструктор инициализации;

конструктор копирования

функцию перегрузки бинарного оператора +

функцию перегрузки унарного оператора +

функция вывода информации

Создайте для него конструктор инициализации, конструктор копирования, функцию перегрузки оператора + , функцию вывода.

Создать объект c1 даного класа. На основе его создать объект c2. Вывести на экран эти два объекта . Применить перегрузку бинарного оператора+ и унарного оператора +

Результати вывести на экран (189)

ЗАВДАННЯ № 218

Дан клас

class coord {

int x, у; // значения координат

public:

добавьте

конструктор инициализации;

конструктор копирования

функцию перегрузки бинарного оператора +

функцию перегрузки унарного оператора +

функция вывода информации

Перепишите класс coord так, чтобы можно было использовать объекты типа

coord для умножения каждой из координат на целое. Должны быть коррект-

ными обе следующие инструкции: ob * int и int * ob. (194)

ЗАВДАННЯ № 219

(198)

В следующей программе объявляется состоящий из пяти целых массив

arraytype. Каждый элемент массива инициализируется конструктором. Пере-

груженная функция operator[]() возвращает элемент, заданный ее параметром.

class arraytype

{ int SIZE;

int a [SIZE] ;

public:

...

Високий рівень знань ( оцінка відмінно)

ЗАВДАННЯ № 220

Створити абстрактний тип даних - клас "вектор", що містить покажчик на int, число елементів і змінну стану. Визначити конструктор без параметрів, конструктор з одним параметром, конструктор із двома параметрами. Конструктор без параметрів виділяє місце для одного елемента та ініціалізує його в нуль. Конструктор з одним параметром (розмір вектора) виділяє місце та ініціалізує нулями, конструктор із двома параметрами виділяє місце (перший аргумент) та ініціалізує другим аргументом. Деструктор звільняє пам'ять. Визначити функцію, яка присвоює елементу масиву деяке значення (параметр за замовчуванням), функцію яка повертає деякий елемент масиву. У змінну стану встановлювати код помилки, якщо не вистачає пам'яті або відбувається вихід за межі масиву. Визначити функцію друку. Визначити функції додавання, множення, віднімання, які виконують ці арифметичні операції з даними класу. Визначити методи порівняння: більше, менше, дорівнює. Перевірити роботу класу.

ЗАВДАННЯ № 221

Створити клас "вектор", що містить посилання на int, розмірність вектора і змінну помилки. Клас має конструктор за замовчуванням, конструктор з одним і двома параметрами, конструктор копіювання і деструктор. Визначити оператори "+", "-", "*" як дружні функції, " = ", «+= »,«- = ", «*= », «[ ]" - як функції-члени. Визначити оператори " = ", "+", "-", "*", "+= ", "- = ", "*= ", "++" , " - - " з цілим числом. Визначити функцію друку. Перевантажити оператори виводу і вводу в потік.

ЗАВДАННЯ № 222

Створити клас матриць, що містить посилання на int, число рядків і стовпчиків і стан помилки. Визначити конструктор за замовчуванням, конструктор з одним і з двома параметрами, конструктор копіювання, деструктор. Визначити оператори " = ", "+", "-", "+= ", "- = ", "*", "*= " з об'єктами цього класу і з цілим. Визначити оператор "[ ]" так, щоб звертання "[ ][ ]" до елементів мало сенс, аналогічний вбудованому. Перевантажити оператори виводу і вводу в потік.

ЗАВДАННЯ № 223

Створити клас "матриця". Даний клас містить покажчик на int, кількість рядків і стовпчиків, стан помилки. Визначити конструктор без параметрів, конструктор з одним параметром, конструктор із двома параметрами, деструктор. Визначити методи доступу: повертати значення елемента (і, j) та адресу цього елемента. Визначити функцію друку. Визначити функції додавання і віднімання (матриць), множення матриці на матрицю. Визначити множення матриці на число. Перевірити роботу класу. У випадку невистачі пам'яті, невідповідності розмірностей, виходу за межі масиву встановлювати код помилки.

ПРАКТИЧНА РОБОТА №3

Тема : Застосування поліморфізму. Віртуальні функції

Слабкий рівень знань ( оцінка задовільно)

ЗАВДАННЯ № 301

В программе создается исходный базовый класс area, в котором сохраняются две размерности фигуры. В нем также объявляется виртуальная функция getare ( ), которая, при ее подмене в производном классе, возвращает площадь фигуры, вид которой задается в производном классе. В этом случае определение функции getarea( ) внутри базового класса задает интерфейс.

Конкретная реализация остается тем классам, которые наследуют класс area.

В этом примере рассчитывается площадь треугольника и прямоугольника.

ЗАВДАННЯ № 302

Создать класс студент, имеющий имя (указатель на строку), курс и идентификационный номер. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - студент-дипломник, имеющий тему диплома. Определить конструкторы по умолчанию и с разным числом параметров, деструкторы, функцию печати. Определить функции переназначения названия диплома и идентификационного номера

ЗАВДАННЯ №303

Создать иерархию классов спортивная игра и футбол. Переопределить вывод в поток и ввод из потока, конструктор копирования, оператор присваивания через соответствующие функции базового класса

ЗАВДАННЯ № 304

Создать иерархию классов спортивная игра и футбол. Переопределить вывод в поток и ввод из потока, конструктор копирования, оператор присваивания через соответствующие функции базового класса.

ЗАВДАННЯ №305

Написати загальний базовий клас fruit, що описує деякі характеристики фруктів. Цей клас успадковується двома похідними класами Apple і Orange. Ці класи містять спеціальну інформацію про конкретний фрукті (яблуці або апельсині). (С61)

ЗАВДАННЯ № 306

Напишите программу, в которой базовый класс dist используется для хране-

ния в переменной типа double расстояния между двумя точками. В классе dist

создайте виртуальную функцию trav_time(), которая выводит на экран время,

необходимое для прохождения этого расстояния с учетом того, что расстоя-

ние задано в милях, а скорость равна 60 миль в час. В производном классе

metric переопределите функцию trav_time() так, чтобы она выводила на эк-

ран время, необходимое для прохождения этого расстояния, считая теперь,

что расстояние задано в километрах, а скорость равна 100 километров в час

Середній рівень знань ( оцінка добре)

ЗАВДАННЯ № 307

  1. Создайте иерархию классов для хранения информации о летательных аппаратах. Начните с общего базового класса airship, предназначенного для хранения количества перевозимых пассажиров и количества перевозимого груза (в фунтах). Затем создайте два производных от airship класса airplane и balloon. Класс airplane должен хранить тип самолетного двигателя (винтовой или реактивный) и дальность полета в милях. Класс balloon должен хранить информацию о типе газа, используемого для подъема дирижабля (водород или гелий), и его максимальный потолок (в футах). Создайте короткую программу для демонстрации работы этой иерархии классов.

ЗАВДАННЯ №308

Создайте исходный базовый класс building для хранения числа этажей и комнат в здании, а также общую площадь комнат. Создайте производный класс house, который наследует класс building и хранит число ванных

комнат и число спален. Кроме этого создайте производный класс office, который наследует класс building и хранит число огнетушителей и телефонов. Что происходит с конструкторами и деструкторами соответствующих классовю Дать объяснения

ЗАВДАННЯ №309

Напишите программу создания базового класса num. В этом классе должно

храниться целое и определяться виртуальная функция shownum(). Создайте

два производных класса outhex и outoct, которые наследуют класс num.

Функция shownum() должна быть переопределена в производных классах так,

чтобы осуществлять вывод на экран значений, в шестнадцатеричной и вось-

меричной системах счисления соответственно.

ЗАВДАННЯ №310

Создается базовый класс AREA , в котором сохраняются

две размерности фигуры. В нем также объявляется чисто виртуальная функция

getare ( ), которая, при ее подмене в производном классе, возвращает пло-

щадь фигуры, вид которой задается в производном классе. В этом случае оп-

ределение функции getarea( ) внутри базового класса задает интерфейс.

Конкретная реализация остается тем классам, которые наследуют класс area.

В этом примере рассчитывается площадь треугольника и прямоугольника.

ЗАВДАННЯ №312

Дан следующий базовый класс:

class area_cl {

public:

double height;

double width;

создайте два производных класса rectangle и isosceles, которые наследуют базовый класс агеа_с1. Каждый класс должен включать в себя функцию агеа(),т которая возвращает площадь соответственно прямоугольника (rectangle) равнобедренного треугольника (isosceles). Для инициализации переменных height и width (высота и длина основания, соответственно) используйте конструктор с параметрами. .(с63)

Добавьте производный класс, который наследует класс агеа_с! Назовите этот класс cylinder и пусть он вычисляет площадь поверхности цилиндра. Эта площадь задается так: 2 * pi * R2 +pi * D * Н.(79)

ЗАВДАННЯ №313

Создать класс студент, имеющий имя (указатель на строку), курс и идентификационный номер. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - студент-дипломник, имеющий тему диплома. Определить конструкторы по умолчанию и с разным числом параметров, деструкторы, функцию печати. Определить функции переназначения названия диплома и идентификационного номера

ЗАВДАННЯ № 314

Создать класс комната, имеющая площадь. Определить конструктор и метод доступа. Создать класс однокомнатных квартира, содержащий комнату и кухню (ее площадь), этаж (комната содержится в классе однокомнатная квартира). Определить конструкторы, методы доступа. Определить public-производный класс однокомнатных квартир разных городов ( дополнительный параметр - название города). Определить конструкторы, деструктор и функцию печати

ЗАВДАННЯ № 315

Определен исходный базовый класс для связанного списка целых.

Интерфейс списка определяется с помощью чистых виртуальных

функций store( ) и retrieve(). Для хранения значения в

списке вызывается функция store(). Для выборки значения из списка вызы-

вается функция retrieve(). В базовом классе list для выполнения этих дейст-

вий никакого встроенного метода не задается. Вместо этого в каждом произ-

водном классе явно определяется, какой тип списка " будет поддерживаться.

В программе надо реализовать списки двух типов; очередь и стек. Хотя способы

работы с этими двумя списками совершенно различны, для доступа к каж-

дому из них применяется один и тот же интерфейс. Вам следует тщательно

продумать эту программу.

Високий рівень знань ( оцінка відмінно)

ЗАВДАННЯ №316

Спроектувати клас - "Динамічний масив". Визначити конструктор за замовчу­ванням, який виділяє пам'ять на 1 елемент та ініціалізує його нулем, конструктор з одним параметром - кількістю елементів. Визначити віртуальну функцію виводу масиву на екран в рядок. Перевантажити оператор присвоювання. Породити від даного класу клас "Динамічна матриця". Перевизначити віртуальну функцію виводу матриці на екран у вигляді таблиці.

ЗАВДАННЯ №317

Спроектувати клас "Динамічний рядок" на основі типу даних char. Визначити конс­труктор за замовчуванням, який створює нульової довжини, конструктор з одним параметром, конструктор копіювання. Визначити віртуальну функцію повернення елементу рядка із заданим індексом. Перевантажити оператор додавання для здійснення конкатенації рядків. Породити від даного класу клас "Динамічний контейнер рядків". Перевизначити віртуальну функцію повернення елемента заданого рядка із заданим номером.

ЗАВДАННЯ №318

Спроектувати клас "Абстрактна геометрична фігура". Визначити конструктор, який приймає три параметри: координати реперної точки та колір. Визначити віртуальну функцію виводу абстрактної фігури на екран. Об'явити віртуальні оператори інкременту та декременту. Породити від даного класу два класи: "Прямокутник" та "Коло", доповнити їх відповідними параметрами. Перевизначити віртуальну функцію виводу кожної фігури на екран і віртуальні оператори інкременту та декременту для розтягнення та стиснення кожної фігури.

ЗАВДАННЯ №319

Спроектувати клас "Обмежений рядок". Визначити конструктор з двома параметрами (рядок та максимальна кількість символів у ньому). Об'явити віртуальним оператор зсуву ліворуч для вводу даних у рядок з клавіатури. Визначити віртуальну функцію виводу рядка на екран. Породити від даного класу клас "Пароль". Перевизначити віртуальний оператор зсуву ліворуч для вводу даних у рядок з клавіатури та відображення їх зірками "*".

ЗАВДАННЯ №320

Спроектувати клас "Числовий рядок". Визначити конструктор за замовчуванням, який створює рядок, що містить один нуль, конструктор з параметром - рядок, конструктор З параметром - дробове число. Визначити віртуальну функцію виводу рядка на екран. Перевантажити оператор інкременту та декременту для збільшення та зменшення відповідно порядку числа (зсуву ліворуч та праворуч десяткової крапки). Породити від даного класу клас "Дробове число". Перевизначити віртуальну функцію виводу числа на екран в експоненціальному форматі (замість 389,711 - 3,89711Е+2).

ЗАВДАННЯ №321

Спроектувати клас "Масив цілих чисел". Визначити конструктор з одним параметром - довжиною масиву. Визначити віртуальні функції занесення та вибору елементів масиву. Перевантажити оператор логічного заперечення для очищення масиву. Породити від даного класу клас "Стек цілих чисел". Перевизначити віртуальні функції занесення та вибору елементів стеку.

ЗАВДАННЯ №322

Спроектувати клас - "Динамічний масив". Визначити конструктор за замовчу­ванням, який виділяє пам'ять на 1 елемент та ініціалізує його нулем, конструктор з одним параметром - кількістю елементів. Визначити віртуальну функцію виводу масиву на екран в рядок. Перевантажити оператор присвоювання. Породити від даного класу клас ^Динамічна матриця". Перевизначити віртуальну функцію виводу матриці на екран у вигляді таблиці.

ЗАВДАННЯ №323

Спроектувати клас "Динамічний рядок" на основі типу даних char. Визначити конс­труктор за замовчуванням, який створює нульової довжини, конструктор з одним параметром, конструктор копіювання. Визначити віртуальну функцію повернення елементу рядка із заданим індексом. Перевантажити оператор додавання для здійснення конкатенації рядків. Породити від даного класу клас "Динамічний контейнер рядків". Перевизначити віртуальну функцію повернення елемента заданого рядка із заданим номером.

ЗАВДАННЯ №324

Спроектувати клас "Абстрактна геометрична фігура". Визначити конструктор, який приймає три параметри: координати реперної точки та колір. Визначити віртуальну функцію виводу абстрактної фігури на екран. Об'явити віртуальні оператори інкременту та декременту. Породити від даного класу два класи: "Прямокутник" та "Коло", доповнити їх відповідними параметрами. Перевизначити віртуальну функцію виводу кожної фігури на екран і віртуальні оператори інкременту та декременту для розтягнення та стиснення кожної фігури.

ЗАВДАННЯ №325

Спроектувати клас "Обмежений рядок". Визначити конструктор з двома параметрами (рядок та максимальна кількість символів у ньому). Об'явити віртуальним оператор зсуву ліворуч для вводу даних у рядок з клавіатури. Визначити віртуальну функцію виводу рядка на екран. Породити від даного класу клас "Пароль". Перевизначити віртуальний оператор зсуву ліворуч для вводу даних у рядок з клавіатури та відображення їх зірками "*".

ЗАВДАННЯ №326

Спроектувати клас "Числовий рядок". Визначити конструктор за замовчуванням, який створює рядок, що містить один нуль, конструктор з параметром - рядок, конструктор з параметром. - дробове число. Визначити віртуальну функції© виводу рядка, на екран. Перевантажити оператор інкременту та декременту для збільшення та зменшення відповідно порядку числа (зсуву ліворуч та праворуч десяткової крапки). Породити від даного класу клас "Дробове число". Перевизначити віртуальну функцію виводу числа на екран в експоненціальному форматі (замість 389,711 - 3,89711Е+2).

ПРАКТИЧНЕ ЗАВДАННЯ № 26

Спроектувати клас "Масив цілих чисел". Визначити конструктор з одним параметром - довжиною масиву. Визначити віртуальні функції занесення та вибору елементів масиву. Перевантажити оператор логічного заперечення для очищення масиву. Породити від даного класу клас "Стек цілих чисел". Перевизначити віртуальні функції занесення та вибору елементів стеку.

18

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]