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

Лабораторна робота № 10

Тема: класи

Мета: навчитись використовувати класи

Хід роботи

1. Ознайомитися із теоретичними відомостями щодо класів:

С/С++. Программирование на языке высокого уровня / Павловская Т.А. – СПб.: Питер, 2003. – 461 с. (сторінки 178-199);

С++. Объектно-ориентированное программирование: Практикум / Павловская Т.А., Щупак Ю.А. – СПб.: Питер, 2006 – 265 с. (сторінки 12-53).

2. Ознайомитися із прикладом вирішення задачі (див. Додаток Б)

3. Ознайомитись із завданням на лабораторну роботу (див Додаток А). Номер завдання має відповідати порядковому номеру студента у журналі групи (діапазон номерів 1-20).

4. Створити програму для вирішення завдання лабораторної роботи.

5. Проаналізувати роботу програми, оформити звіт та подати його викладачу для оціню­вання захисту лабораторної роботи. У звіт включити: титульний лист; лист опису: тема, мета, словник термінів; лист вирішення: умова задачі, опис вирішення, програму, результат роботи програми, висновок.

Додаток А — Список варіантів

Варіант 1

Описати клас, який реалізує стек. Написати програму, що використовує цей клас для моделювання Т-подібного сортувального вузла на залізниці. Програма має поділяти склад на два напрямки, що складається з вагонів двох типів (на кожний напрямок формується склад з вагонів одного типу). Передбачити можливість формування складу з файлу і з клавіатури.

Варіант 2

Описати клас, який реалізує бінарне дерево, що володіє можливістю додавання нових елементів, видалення існуючих, пошуку елемента по ключу, а також послідовного доступу до всіх елементів. Написати програму, що використовує цей клас для представлення англо-російського словника. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу. Передбачити можливість формування словника з файлу і з клавіатури.

Варіант 3

Побудувати систему класів для опису плоских геометричних фігур: круга, квадрата, прямокутника. Передбачити методи для створення об'єктів, переміщення на площині, зміни розмірів і обертання на заданий кут. Написати програму, що демонструє роботу з цими класами. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класів.

Варіант 4

Побудувати опис класу, який містить інформацію про поштову адресу організації. Передбачити можливість роздільної зміни складових частин адреси, створення та знищення об'єктів цього класу. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 5

Скласти опис класу для представлення комплексних чисел. Забезпечити виконання операцій додавання, віднімання і множення комплексних чисел. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 6

Скласти опис класу для об’єктів-векторів, що задаються координатами кінців у тривимірному просторі. Забезпечити операції додавання і віднімання векторів з отриманням нового вектора (суми або різниці), обчислення скалярного добутку двох векторів, довжини вектора, косінуса кута між векторами. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 7

Скласти опис класу прямокутників зі сторонами, паралельними осям координат. Передбачити можливість переміщення прямокутників на площині, зміну розмірів, побудова найменшого прямокутника, що містить два заданих прямокутника, і прямокутника, що є загальною частиною (перетином) двох прямокутників. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 8

Скласти опис класу для визначення одновимірних масивів цілих чисел (векторів). Передбачити можливість звернення до окремого елементу масиву з контролем виходу за межі масиву, можливість завдання довільних кордонів індексів при створенні об'єкта, можливість виконання операцій поелементного додавання і віднімання масивів з однаковими межами індексів, множення і ділення всіх елементів масиву на скаляр, виведення на екран елемента масиву по заданому індексом, виведення на екран усього масиву. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 9

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

Варіант 10

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

Варіант 11

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

Варіант 12

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

Варіант 13

Написати клас для ефективної роботи з рядками, що дозволяє форматувати і порівнювати рядки, зберігати в рядках числові значення і використовувати їх. Для цього необхідно реалізувати:

• перевантажені операції присвоювання і конкатенації;

• операції порівняння та приведення типів;

• перетворення в число будь-якого типу;

• форматне виведення рядка.

Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 14

Описати клас «домашня бібліотека». Передбачити можливість роботи з довільним числом книг, пошуку книги з будь-якою ознакою (наприклад, за автором або за роком видання), додавання книг в бібліотеку, видалення книг з неї, сортування книг по різних полях. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 15

Описати клас «записна книжка». Передбачити можливість роботи з довільним числом записів, пошуку запису за якою-небудь ознакою (наприклад, на прізвище, дату народження або за номером телефону), додавання і видалення записів, сортування по різних полях. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 16

Описати клас «студентська група». Передбачити можливість роботи зі змінним числом студентів, пошуку студента за якою-небудь ознакою (наприклад, прізвище, дату народження або за номером телефону), додавання і видалення записів, сортування по різних полях. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 17

Описати клас, який реалізує тип даних «речова матриця» і роботу з ним. Клас повинен реалізовувати наступні операції над матрицями:

• додавання, віднімання, множення, ділення (+, -, *, /) (множення і ділення, як на іншу матрицю, так і на число);

• комбіновані операції присвоювання (+=, -=, *=, / =);

• операції порівняння на рівність / нерівність;

• операції обчислення зворотної та транспонованої матриці, операцію піднесення до степеня;

• методи обчислення детермінанта і норми;

• методи, що реалізують перевірку типу матриці (квадратна, діагональна, нульова, одинична, симетрична, верхня трикутна, нижня трикутна);

• операції вводу / виводу в стандартні потоки.

Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 18

Описати клас «безліч», що дозволяє виконувати основні операції - додавання та видалення елементу, перетин, об'єднання і різницю множин. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 19

Описати клас, який реалізує стек. Написати програму, що використовує цей клас для відшукання проходу по лабіринту. Лабіринт представляється у вигляді матриці, що складається із квадратів. Кожен квадрат або відкрито, або закрито. Вхід у закритий квадрат заборонений. Якщо квадрат відкрито, то вхід у нього можливий з боку, але не з кута. Кожен квадрат визначається його координатами в матриці. Після відшукання проходу програма друкує знайдений шлях у вигляді координат квадратів.

Варіант 20

Описати клас «предметний покажчик». Кожен компонент покажчика містить слово і номери сторінок, на яких це слово зустрічається. Кількість номерів сторінок, що відносяться до одного слова, від одного до десяти. Передбачити можливість формування риски з клавіатури і з файлу, виведення покажчика, виведення номерів сторінок для заданого слова, видалення елемента з покажчика. Написати програму, що демонструє роботу з цим класом. Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Додаток А – приклад вирішення задачі

Постановка задачі: створити програму, яка буде імітувати роботу стека на основі статичного та динамічного масивів.

Структура проекту:

Код програми:

Вміст файлу “main.сpp”

#include<iostream>

#include<stdio.h>

#include "static_stack.h"

#include "dynamic_stack.h"

using namespace std;

template<class stack_type>

void StackTest(stack_type stack, char* title) {

printf("%s\n", title);

printf("Уведіть :\n- позитивне число - залучити до стеку \

\n- негативне число - витягнути із стеку \

\n- нуль - вийти із тестування\n");

int x = 1;

while (true) {

cout << "x = ";

cin >> x;

if (x == 0) break;

if (x > 0) stack.push(x);

else stack.pop();

stack.print();

}

return;

}

int main() {

static_stack stack;

dynamic_stack dstack(2);

StackTest(stack, "Тестування static_stack");

printf("\n==================================\n\n");

StackTest(dstack, "Тестування dynamic_stack");

return 0;

}

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