Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_2 часть_укр.doc
Скачиваний:
1
Добавлен:
09.11.2019
Размер:
938.5 Кб
Скачать

3.4. Методичні вказівки

  1. Для операцій, які виконуються за допомогою функцій-членів класу, скласти меню (див. розд. "2.1.1. Списки" лабораторної роботи 2).

  2. У функціях-членах класів передбачити виведення повідомлень у випадку, якщо список (стек, черга) порожній.

  3. Для списків, стеків і черг, довжина яких обмежена, передбачити виведення повідомлень у випадку їхнього переповнення.

3.5. Зміст звіту

  1. Постановка завдання.

  2. Код програми.

  3. Скриншот з результатами роботи програми.

  4. Пояснення результатів і висновки.

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. Варіанти завдань

  1. А– верхня трикутна матриця N×N з одиниць;

B – матриця N×N випадкових цілих чисел, менших M;

С – матриця N×N випадкових дійсних чисел, менших 1.

Обчислити добутки матриць: А×B, B×А, B×C.

  1. А – верхня трикутна матриця N×N з одиниць;

B – матриця-рядок з N випадкових цілих чисел, менших M;

С – матриця-стовпець із N випадкових цілих чисел, в інтервалі від M1 до М2.

Обчислити добутки матриць: B×А×C і C×B.

  1. А – діагональна матриця N×N; на діагоналі перебувають числа 1, 2,..N;

B – діагональна матриці M×M, на діагоналі – числа 12, 2 2,..N 2;

С – матриця N×M з випадкових цілих чисел в інтервалі від M1 до М2.

Обчислити добуток матриць А×C×B.

  1. А – діагональна матриця N×N, на діагоналі - числа 1, 1/2,..1/N;

B – нижня трикутна матриця N×N випадкових чисел, менших М;

С – верхня трикутна матриця N×N випадкових цілих чисел, в інтервалі від M1 до М2 (елементи, менші М1, замінені нулями).

Обчислити добутки матриць: А×B, B×C, C×A.

  1. А – одинична матриця N×N;

B – нижня трикутна матриця N×N випадкових чисел з М ненульовими діагоналями;

С – матриця N×N випадкових цілих чисел, в інтервалі від M1 до М2 (елементи, менші М1, замінені нулями).

Обчислити суму А+B+С, а також добуток матриць B×C..

  1. А – матриця N×N з елементами aij = i;

B – матриця N×N випадкових чисел, менших М;

С – матриця N×N з елементами aij = i* M1+j*М2.

Обчислити добутки матриць: А×B, B×C, C×B.

  1. А – матриця-рядок з N елементів ai = i;

B – матриця N×N випадкових дійсних чисел, менших 1;

С – матриця-стовпець із N елементів ai = im.

Обчислити добутки матриць: А×B×C і C×А.

  1. А – нижня трикутна матриця N×N з елементами aij = i (при i>=j);

B – матриця N×N випадкових дійсних чисел, менших M;

С – верхня трикутна матриця N×N з aij = i*M1+j*М2 (при i<=j).

Обчислити добутки матриць: А×C, B×А, B×C.

  1. А – діагональна матриця N×N з елементами aij = i (при i=j);

B – матриця N×N випадкових дійсних чисел, менших M;

С – діагональна матриця N×N з елементами aij = m1*im2 (при i=j).

Обчислити добутки матриць: А×B, B×A, C×A.

  1. А – нижня трикутна матриця N×N з елементами aij=5*i (при i>=j);

B – матриця N×N випадкових дійсних чисел, менших 1;

С – верхня трикутна матриця N×N з елементами aij=M*(i+j).

Обчислити добутки матриць: А×C, B×А, B×C.

  1. А – нижня трикутна матриця N×N з елементами aij=i (при i>=j);

B – матриця N×N з дійсними елементами aij = i/j;

С – верхня трикутна матриця N×N з елементами aij = m1*im2 .

Обчислити добутки матриць: А×B, B×А, C×B.

  1. А – верхня трикутна матриця N×N з елементами aij=i (при i<=j);

B – нижня трикутна матриця N×N з елементами aij = i/j;

С – верхня трикутна матриця N×N з елементами aij = m1*im2 .

Обчислити добутки матриць: А×B, B×C, A×C.

  1. А – верхня трикутна матриця N×N з одиниць;

B – матриця-стовпець із N випадкових цілих чисел, в інтервалі від M1 до М2;

С – матриця-рядок з N випадкових цілих чисел, менших M.

Обчислити добутки матриць: А×B, B×C, C×В.

  1. А – верхня трикутна матриця N×N з випадкових чисел, менших M;

B – нижня трикутна матриця N×N випадкових чисел з М ненульовими діагоналями;

С – матриця N×N з випадкових цілих чисел в інтервалі від M1 до М2.

Обчислити суму А+B+C, а також добуток матриць А×В і B×C.

  1. А – верхня трикутна матриця N×N з елементами, рівними 1;

B – матриця N×N з елементами aij = i+j;

С – верхня трикутна матриця N×N з елементами aij = M*i.

Обчислити добутки матриць: А×B, B×С, C×А.

  1. А – діагональна матриця N×N; на діагоналі перебувають числа 1, 1/2,..1/N;

B – нижня трикутна матриця N×N випадкових чисел з М ненульовими діагоналями;

С – матриця N×N з елементами aij = i2+j2.

Обчислити суму А+B+З, а також добуток матриць А×В і B×C.

  1. А – матриця-стовпець із N елементами 1, 2,..N;

B – нижня трикутна матриця N×N з одиниць;

С – матриця-рядок з елементами ai = (N-i)2.

Обчислити добутки матриць: А×C і C×B×А.

  1. А – матриця-рядок з N елементами 1, 2,..N;

B – матриця N×N випадкових чисел, менших M1;

С – матриця-стовпець з елементами ai = (M2-i)2.

Обчислити добутки матриць: А×В×C, А×C і C×А.

  1. А – матриця N×N; на головній і побічній діагоналях перебувають 1, інші елементи – 0;

B – нижня трикутна матриця N×N з 1 і M у випадковому порядку;

С – матриця-стовпець із елементами ai = (N-i)2.

Обчислити добутки матриць: А×B×C і В×А.

  1. А – матриця N×N, заповнена 0 і 1 у випадковому порядку;

B – нижня трикутна матриця N×N з елементів 1 і M, розташованими у випадковому порядку;

С – верхня трикутна матриця N×N з елементів М1 і M2 у випадковому порядку.

Обчислити добутки матриць: А×B×C і C×B×А.

  1. А – верхня трикутна матриця N×N з одиниць;

B – матриця N×N, заповнена 0 і 1 у випадковому порядку;

С – верхня трикутна матриця N×N з елементів М1 і M2, розташованими у випадковому порядку.

Обчислити добутки матриць: А×B×C і C×B×А.

  1. А – матриця N×N, заповнена 0 і 1 у випадковому порядку;

B – матриця-рядок з N випадкових цілих чисел, менших M;

С – матриця-стовпець із N випадкових цілих чисел, в інтервалі від M1 до М2.

Обчислити добутки матриць: А×C×В і C×В.

  1. А – діагональна матриця N×N; на діагоналі – числа 1, 1/2,..1/N;

B – матриця N×N випадкових дійсних чисел, менших M;

С – верхня трикутна матриця N×N з елементів М1 і M2, розташованими у випадковому порядку;

Обчислити добутки матриць: А×B×C і C×B×А.

  1. А – нижня трикутна матриця N×N з елементами aij=i (при i>=j);

B – матриця N×N випадкових дійсних чисел, менших 1;

С – верхня трикутна матриця N×N з елементів М1 і M2, розташованими у випадковому порядку;

Обчислити добутки матриць: А×B×C і C×B×А.