- •1. Лабораторна робота 1. "Структури: складені типи даних"
- •Теоретичні відомості
- •1.1.1. Структури
- •1.1.2. Робота з масивом структур
- •1.2. Постановка задачі
- •1.3. Варіанти
- •1.4. Методичні вказівки
- •Постановка задачі.
- •2. Лабораторна робота 2 "Динамічні структури даних"
- •2.1. Теоретичні відомості
- •2.1.1. Списки
- •2.1.2. Стеки
- •2.1.3. Черги
- •2.2. Постановка задачі
- •2.3. Варіанти завдань
- •3.1.2. Члени класу
- •3.1.3. Доступ до членів класу
- •3.1.4. Черги-масиви
- •3.1.5. Стеки-масиви
- •3.2. Постановка задачі
- •3.3. Варіанти завдань
- •3.4. Методичні вказівки
- •4. Лабораторна робота 4. "Перезавантаження конструкторів"
- •4.1. Теоретичні відомості
- •4.1.1. Перезавантаження конструкторів
- •4.1.3. Операції з матрицями
- •4.2. Постановка задачі
- •4.3. Варіанти завдань
- •4.4. Методичні вказівки
- •5. Лабораторна робота 5. "Перезавантаження операторів. Дружні функції"
- •5.1. Теоретичні відомості
- •5.1.1. Дружні функції
- •5.1.1. Перезавантаження операторів
- •5.1.2. Операторні функції для комплексних чисел
- •5.2. Постановка задачі
- •5.3. Варіанти завдань
- •5.4. Методичні вказівки
- •6. Лабораторна робота 6. "Спадкування. Віртуальні функції"
- •6.1 Теоретичні відомості
- •6.1.1. Спадкування й модифікатори спадкування
- •6.1.2. Віртуальні функції
- •6.1.3. Відділення інтерфейсу від реалізації
- •6.2. Постановка задачі
- •6.3. Варіанти завдань
- •6.4. Методичні вказівки
- •7. Лабораторна робота 7. "Шаблони"
- •7.1. Теоретичні відомості
- •7.1.1. Шаблони функцій
- •7.1.2. Шаблони класів
- •7.1.3. Приклад. Методи шаблона вектора
- •7.1.4. Приклад. Шаблон класу зв'язного списку
- •7.2. Постановка задачі
- •7.3. Варіанти завдань
- •7.4. Методичні вказівки
- •8. Лабораторна робота 8. "Файловий введення-виведення"
- •8.1. Теоретичні відомості
- •8.1.2. Потоки й файли
- •8.1.3. Текстові файли. Форматоване введення-виведення
- •8.1.4. Неформатоване двійкове введення-виведення
- •8.1.5. Файли довільного доступу
- •8.2. Постановка задачі
- •8.3. Варіанти завдань
- •8.4. Методичні вказівки
- •Література
3.4. Методичні вказівки
Для операцій, які виконуються за допомогою функцій-членів класу, скласти меню (див. розд. "2.1.1. Списки" лабораторної роботи 2).
У функціях-членах класів передбачити виведення повідомлень у випадку, якщо список (стек, черга) порожній.
Для списків, стеків і черг, довжина яких обмежена, передбачити виведення повідомлень у випадку їхнього переповнення.
3.5. Зміст звіту
Постановка завдання.
Код програми.
Скриншот з результатами роботи програми.
Пояснення результатів і висновки.
4. Лабораторна робота 4. "Перезавантаження конструкторів"
Ціль роботи: Вивчення механізму перезавантаження конструкторів. Застосування перезавантаження до створення об'єктів матриць, виконання операцій над об'єктами.
4.1. Теоретичні відомості
4.1.1. Перезавантаження конструкторів
Конструктор – це опис, як створювати значення даного типу, тобто об'єкт даного класу. Програміст може перевизначати зміст конструктора при створенні об'єктів заданого класу.
С++ дозволяє визначати декілька конструкторів з тим самим ім'ям, але з різним набором аргументів. Це називається перезавантаженням конструкторів. Щоб перезавантажити конструктор класу, досить оголосити його у всіх потрібних форматах і визначити для кожного формату свій конструктор. Вибір того або іншого конструктора для створення об'єкта виконується за набором або за типом аргументів.
Наведемо приклад конструювання об'єктів у вигляді квадратних матриць. Сформуємо верхню трикутну матрицю й матрицю випадкових чисел, менших max. Оголосимо клас матриць:
class Matrix{
int a[N][N];
int max, i, j, k;
public:
Matrix(); //Конструктор за замовчуванням
Matrix(int); //Конструктор із цілим параметром
void outm(); //Функція виведення
Matrix mult (Matrix, Matrix); //Функція множення матриць
};
У цьому класі перезавантажені конструктори опишемо в такий спосіб:
Matrix :: Matrix() {
for (j=0; j<N; j++)
for (k=0; k<N; k++)
if (j<=k) a[j][k]=1;
else a[j][k]=0;
}
Matrix :: Matrix(int max) {
for (j=0; j<N; j++)
for (k=0; k<N; k++)
a[j][k]=rand()%max;
}
4.1.3. Операції з матрицями
Функції-члени outm і mult класу Matrix виконують відповідно виведення матриці на екран і множення двох матриць. Визначення цих функцій має вигляд:
//-------Функція печатки матриці-----------
void Matrix :: outm(){
for (j=0; j<N; j++) {
for (k=0; k<N; k++)
printf("%4d\t", a[j][k]);
printf("\n");};
}
//----Функція множення матриць, повертає об'єкт класу Matrix---
Matrix Matrix :: mult(Matrix m1, Matrix m2){
Matrix mx;
for (i=0; i<N; i++)
for (j=0; j<N; j++){
mx.a[i][j] = 0;
for (k=0; k<N; k++)
mx.a[i][j] += m1.a[i][k] * m2.a[k][j]; };
return mx;
}
4.2. Постановка задачі
Створити клас матриць із перезавантаженими конструкторами, які дають три типи матриць: А, У и С. Клас повинен включати функції-члени, які виконують дії, зазначені у варіанті завдання. Створити об'єкти за допомогою конструкторів і виконати потрібні обчислення.
4.3. Варіанти завдань
А– верхня трикутна матриця N×N з одиниць;
B – матриця N×N випадкових цілих чисел, менших M;
С – матриця N×N випадкових дійсних чисел, менших 1.
Обчислити добутки матриць: А×B, B×А, B×C.
А – верхня трикутна матриця N×N з одиниць;
B – матриця-рядок з N випадкових цілих чисел, менших M;
С – матриця-стовпець із N випадкових цілих чисел, в інтервалі від M1 до М2.
Обчислити добутки матриць: B×А×C і C×B.
А – діагональна матриця N×N; на діагоналі перебувають числа 1, 2,..N;
B – діагональна матриці M×M, на діагоналі – числа 12, 2 2,..N 2;
С – матриця N×M з випадкових цілих чисел в інтервалі від M1 до М2.
Обчислити добуток матриць А×C×B.
А – діагональна матриця N×N, на діагоналі - числа 1, 1/2,..1/N;
B – нижня трикутна матриця N×N випадкових чисел, менших М;
С – верхня трикутна матриця N×N випадкових цілих чисел, в інтервалі від M1 до М2 (елементи, менші М1, замінені нулями).
Обчислити добутки матриць: А×B, B×C, C×A.
А – одинична матриця N×N;
B – нижня трикутна матриця N×N випадкових чисел з М ненульовими діагоналями;
С – матриця N×N випадкових цілих чисел, в інтервалі від M1 до М2 (елементи, менші М1, замінені нулями).
Обчислити суму А+B+С, а також добуток матриць B×C..
А – матриця N×N з елементами aij = i;
B – матриця N×N випадкових чисел, менших М;
С – матриця N×N з елементами aij = i* M1+j*М2.
Обчислити добутки матриць: А×B, B×C, C×B.
А – матриця-рядок з N елементів ai = i;
B – матриця N×N випадкових дійсних чисел, менших 1;
С – матриця-стовпець із N елементів ai = im.
Обчислити добутки матриць: А×B×C і C×А.
А – нижня трикутна матриця N×N з елементами aij = i (при i>=j);
B – матриця N×N випадкових дійсних чисел, менших M;
С – верхня трикутна матриця N×N з aij = i*M1+j*М2 (при i<=j).
Обчислити добутки матриць: А×C, B×А, B×C.
А – діагональна матриця N×N з елементами aij = i (при i=j);
B – матриця N×N випадкових дійсних чисел, менших M;
С – діагональна матриця N×N з елементами aij = m1*im2 (при i=j).
Обчислити добутки матриць: А×B, B×A, C×A.
А – нижня трикутна матриця N×N з елементами aij=5*i (при i>=j);
B – матриця N×N випадкових дійсних чисел, менших 1;
С – верхня трикутна матриця N×N з елементами aij=M*(i+j).
Обчислити добутки матриць: А×C, B×А, B×C.
А – нижня трикутна матриця N×N з елементами aij=i (при i>=j);
B – матриця N×N з дійсними елементами aij = i/j;
С – верхня трикутна матриця N×N з елементами aij = m1*im2 .
Обчислити добутки матриць: А×B, B×А, C×B.
А – верхня трикутна матриця N×N з елементами aij=i (при i<=j);
B – нижня трикутна матриця N×N з елементами aij = i/j;
С – верхня трикутна матриця N×N з елементами aij = m1*im2 .
Обчислити добутки матриць: А×B, B×C, A×C.
А – верхня трикутна матриця N×N з одиниць;
B – матриця-стовпець із N випадкових цілих чисел, в інтервалі від M1 до М2;
С – матриця-рядок з N випадкових цілих чисел, менших M.
Обчислити добутки матриць: А×B, B×C, C×В.
А – верхня трикутна матриця N×N з випадкових чисел, менших M;
B – нижня трикутна матриця N×N випадкових чисел з М ненульовими діагоналями;
С – матриця N×N з випадкових цілих чисел в інтервалі від M1 до М2.
Обчислити суму А+B+C, а також добуток матриць А×В і B×C.
А – верхня трикутна матриця N×N з елементами, рівними 1;
B – матриця N×N з елементами aij = i+j;
С – верхня трикутна матриця N×N з елементами aij = M*i.
Обчислити добутки матриць: А×B, B×С, C×А.
А – діагональна матриця N×N; на діагоналі перебувають числа 1, 1/2,..1/N;
B – нижня трикутна матриця N×N випадкових чисел з М ненульовими діагоналями;
С – матриця N×N з елементами aij = i2+j2.
Обчислити суму А+B+З, а також добуток матриць А×В і B×C.
А – матриця-стовпець із N елементами 1, 2,..N;
B – нижня трикутна матриця N×N з одиниць;
С – матриця-рядок з елементами ai = (N-i)2.
Обчислити добутки матриць: А×C і C×B×А.
А – матриця-рядок з N елементами 1, 2,..N;
B – матриця N×N випадкових чисел, менших M1;
С – матриця-стовпець з елементами ai = (M2-i)2.
Обчислити добутки матриць: А×В×C, А×C і C×А.
А – матриця N×N; на головній і побічній діагоналях перебувають 1, інші елементи – 0;
B – нижня трикутна матриця N×N з 1 і M у випадковому порядку;
С – матриця-стовпець із елементами ai = (N-i)2.
Обчислити добутки матриць: А×B×C і В×А.
А – матриця N×N, заповнена 0 і 1 у випадковому порядку;
B – нижня трикутна матриця N×N з елементів 1 і M, розташованими у випадковому порядку;
С – верхня трикутна матриця N×N з елементів М1 і M2 у випадковому порядку.
Обчислити добутки матриць: А×B×C і C×B×А.
А – верхня трикутна матриця N×N з одиниць;
B – матриця N×N, заповнена 0 і 1 у випадковому порядку;
С – верхня трикутна матриця N×N з елементів М1 і M2, розташованими у випадковому порядку.
Обчислити добутки матриць: А×B×C і C×B×А.
А – матриця N×N, заповнена 0 і 1 у випадковому порядку;
B – матриця-рядок з N випадкових цілих чисел, менших M;
С – матриця-стовпець із N випадкових цілих чисел, в інтервалі від M1 до М2.
Обчислити добутки матриць: А×C×В і C×В.
А – діагональна матриця N×N; на діагоналі – числа 1, 1/2,..1/N;
B – матриця N×N випадкових дійсних чисел, менших M;
С – верхня трикутна матриця N×N з елементів М1 і M2, розташованими у випадковому порядку;
Обчислити добутки матриць: А×B×C і C×B×А.
А – нижня трикутна матриця N×N з елементами aij=i (при i>=j);
B – матриця N×N випадкових дійсних чисел, менших 1;
С – верхня трикутна матриця N×N з елементів М1 і M2, розташованими у випадковому порядку;
Обчислити добутки матриць: А×B×C і C×B×А.