Добавил:
https://vk.com/club199197084 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные Егоров / 0361_ЦукановаПА_№2

.pdf
Скачиваний:
7
Добавлен:
03.02.2024
Размер:
311.78 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра информационной безопасности

ПРАКТИЧЕСКАЯ РАБОТА №2

по дисциплине «Объектно-ориентированное программирование»

ТЕМА: МАТРИЦА, ЗАДАННАЯ НА МНОЖЕСТВЕ КОМПЛЕКСНЫХ ЧИСЕЛ

 

 

 

Семенова Е.А.

Студенты гр. 0361

 

Цуканова П.А.

Преподаватель

 

 

Егоров С.С.

Санкт-Петербург

2023

ЗАДАНИЕ НА ПРАКТИЧЕСКУЮ РАБОТУ

Студенты Цуканова П.А., Семенова Е.А. Группа 0361

Исходные данные: Создать консольное приложение, реализующее функции перечисленные в описании работы №1, но на множестве комплексных чисел. Приложение должно включать основной модуль, модуль «application», модуль «matrix» и модуль «complex».

СПЕЦИФИКАЦИИ КЛАССОВ

1. Класс Application.

Атрибуты класса:

1. matrix, тип атрибута Matrix. Область видимости private.

Поле, которая хранит текущую матрицу.

Методы класса:

1. Application(). Область видимости public. Конструктор класса, инициирует создание матрицы по умолчанию.

2. showMenu(). Область видимости public. Выводит в консоль меню команд приложения.

3.inputMatrix(). Область видимости private. Инициирует ввод в консоль значений матрицы.

4.calculateDeterminant(). Область видимости private.

Инициирует расчет определителя матрицы и вывод результатов расчета.

5. transposeMatrix(). Область видимости private. Инициирует формирование транспонированной матрицы и ее вывод на экран.

6. calculateRank(). Область видимости private. Инициирует расчет ранга матрицы и его вывод на экран.

7. printMatrix(). Область видимости private. Инициирует вывод матрицы в консоль.

2. Класс Matrix.

Атрибуты класса:

1. size, тип атрибута int. Область видимости private. Поле,

которая хранит значение размера массива.

2. elements, тип атрибута number**. Область видимости private. Поле, хранит в себе элементы матрицы.

Методы класса:

TComplex(). Область видимости public. Конструктор класса,
производит создание комплексного числа по умолчанию с нулевыми значениями вещественной и мнимой части числа.
TComplex(double r, double i). double r, double i
значения вещественной и мнимой частей числа соответственно.

1. Matrix(). Область видимости public. Конструктор класса,

инициирует создание матрицы по умолчанию.

2. Matrix(int n). Область видимости public. Конструктор класса, инициализирует матрицу заданного размера n.

3. ~Matrix(). Область видимости public. Деструктор класса,

освобождает выделенную динамическую память.

4. input(). Область видимости public. Производит ввод в

консоль значений элементов матрицы.

5. print(). Область видимости public. Производит вывод элементов матрицы.

6. determinant(). Область видимости public. Производит расчет определителя матрицы.

7. rank(). Область видимости public. Производит расчет ранга матрицы.

8. transpose(). Область видимости public. Производит транспонирование матрицы.

9.operator=(const Matrix &other). Область видимости

public. Перегрузка оператора присваивания.

3.Класс TComplex.

Атрибуты класса:

1. re, тип атрибута double. Область видимости public. Поле,

которое хранит значение вещественной части числа.

2. im, тип атрибута double. Область видимости public. Поле,

которое хранит значение мнимой части числа.

Методы класса:

1.

2.

Область видимости public. Конструктор класса, производит создание комплексного числа с переданными значениями вещественной и мнимой части числа.

3. TComplex(int i). Область видимости public. Конструктор класса, производит преобразование целого числа до комплексного с нулевой мнимой частью.

4. operator-(const TComplex& c). Область видимости public.

Перегрузка оператора вычитания.

5. operator*(const TComplex& c). Область видимости public.

Перегрузка оператора умножения.

6. operator/(const TComplex& c). Область видимости public.

Перегрузка оператора деления.

7. operator=(const TComplex& c). Область видимости public.

Перегрузка оператора присваивания.

8. operator==(const TComplex& c). Область видимости public.

Перегрузка оператора сравнения (равенства).

9. operator!=(const TComplex& c). Область видимости public.

Перегрузка оператора сравнения (неравенства).

10. operator>>(istream& in, TComplex& c). Область

видимости public. Дружественная функция. Перегрузка оператора ввода.

11. operator<<(ostream& os, const TComplex& c). Область

видимости public. Дружественная функция. Перегрузка оператора вывода.

ДИАГРАММА КЛАССОВ

На рисунке 1 представлена диаграмма классов, дополненная атрибутами и методами.

Рисунок 1 – Диаграмма классов.

ОПИСАНИЕ КОНТРОЛЬНОГО ПРИМЕРА С ИСХОДНЫМИ И

ОЖИДАЕМЫМИ (РАСЧЕТНЫМИ) ДАННЫМИ

Контрольный пример:

1 + 1

2 + 2

1 + 1

 

= (3 + 3

4 + 4

5

+ 5

) – исходная матрица.

7 + 7

1 + 1

10

+ 10

 

 

1 + 1

 

2 + 2

 

1 + 1

1 + 1

2 + 2

1 + 1

det = |3 + 3

 

4 + 4

 

5 + 5 | = | 0

−2 − 2

2 + 2 | =

 

 

7 + 7

 

1 + 1

10 + 10

0

 

0

−10 − 10

= (1 + 1 )(−2 − 2 )(−10 − 10 ) = −40 + 40

 

 

 

 

1 + 1

3 + 3

7 + 7

 

 

 

 

 

 

4 + 4

1 + 1 )

 

 

 

 

= (2 + 2

 

 

 

 

 

1 + 1

5 + 5

10 + 10

 

 

 

 

Ранг матрицы:

 

 

 

 

 

 

 

 

1 + 1

2 + 2

1 + 1

3 + 3

6 + 6

 

3 + 3

 

(3 + 3

4 + 4

5 + 5 ) ~ (3 + 3

4 + 4

 

5 + 5 ) ~

7 + 7

1 + 1

10 + 10

7 + 7

1 + 1

10 + 10

3 + 3

6 + 6

 

3 + 3

 

1 + 1

2 + 2

 

1 + 1

 

~ ( 0

−2 − 2

 

2 + 2 ) ~ ( 0

−2 − 2

 

2 + 2 ) ~

7 + 7

1 + 1

 

10 + 10

7 + 7

1 + 1

10 + 10

7 + 7

14 + 14

 

7 + 7

7 + 7

14 + 14

7 + 7

~ ( 0

−2 − 2

 

2 + 2 ) ~ ( 0

−2 − 2

2 + 2 ) ~

7 + 7

1 + 1

 

10 + 10

0

−13 − 13

3 + 3

1 + 1

 

2 + 2

 

1 + 1

1 + 1

2 + 2

 

1 + 1

~ ( 0

−1 − 1

 

1 + 1 ) ~ ( 0

−13 − 13

13 + 13 )~

0

−13 − 13 3 + 3

0

−13 − 13

3 + 3

1 + 1

2 + 2

 

1 + 1

 

 

 

 

 

~ ( 0

−1 − 1

 

1 + 1 )

 

 

 

 

0

 

0

 

−10 − 10

 

 

 

 

 

Следовательно, ( ) = 3.

СКРИНШОТЫ РАБОТЫ ПРОГРАММЫ НА КОНТРОЛЬНЫХ

ПРИМЕРАХ

После запуска программы на экране появляется консоль, в которую выводится меню, что показано на рисунке 2.

Рисунок 2 – Запуск программы и начальное меню Необходимо ввести значения элементов матрицы. Для этого нужно

ввести «1» и нажать клавишу Enter. Программа предложит ввести размер матрицы и её элементы. На рисунке 3 показан ввод элементов матрицы из контрольного примера.

Рисунок 3 – Ввод матрицы из контрольного примера

Чтобы вывести матрицы на экран, введём «5» и нажмём клавишу Enter.

В консоли появится матрица и введённые на предыдущем шаге элементы

(рисунок 4).

Рисунок 4 – Вывод матрицы на экран Вычислим определитель матрицы. Для этого введём «2» и нажмём

клавишу Enter. На рисунке 5 показаны результаты работы программы.

Рисунок 5 – Вычисление определителя матрицы Теперь транспонируем матрицу. Чтобы это сделать, необходимо ввести

«3» и нажать клавишу Enter. На экране появится транспонированная матрица

(рисунок 6).

Рисунок 6 – Вывод транспонированной матрицы на экран Чтобы найти ранг матрицы, необходимо ввести «4» и нажать клавишу

Enter. На рисунке 7 показан результат работы программы.

Рисунок 7 – Вычисление ранга матрицы Наконец, чтобы выйти из программы, нужно ввести «6» и нажать

клавишу Enter. Далее можно нажать на любую кнопку, и программа автоматически закроется. Меню выхода из программы показано на рисунке 8.

Рисунок 8 – Меню выхода из программы

Соседние файлы в папке Лабораторные Егоров