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

Описание программы

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

Меню состоит из трех пунктов: «Файл», «Операции», «Справка». В свою очередь меню «Файл» состоит из пункта «Закрыть», позволяющего закрыть программу. Меню «Операции» состоит из пунктов «Сложение», «Вычитание», «Умножение», «Генерация». Меню «Справка» состоит из пунктов «Об авторе» и «Помощь».

Для начала работы необходимо выбрать размерность матриц кнопками «Уменьшить» или «Увеличить». В программе предусмотрена работа с матрицами от 2х2 до 8х8. Но размерность матриц можно изменить легко, поправив небольшой участок в коде программы. Теперь нам нужно внести данные в матрицы. Для этого есть два способа.

1. Из-за того что в проекте мы использовали подключаемый модуль Microsoft FlexGrid, дающий нам возможность выводить матрицы в удобном виде, но не позволяющий редактировать данные напрямую, то мы используем поле для редактирования ячеек. Для редактирования выбираем ячейку, при этом данные переносятся в поле для редактирования, изменяем данные и нажимаем Enter. После нажатия кнопки курсор перемещается в следующую ячейку и для удобства редактирования данные, перемещенные из ячейки, выделяются.

2. Через меню Операции — Сгенерировать можно сгенерировать либо матрицу А, матрицу В или обе матрицы. Сгенерированные матрицы также можно отредактировать.

Для умножения матриц необходимо нажать на кнопку «*» на форме. Для сложения и вычитания следует на жать на форме кнопки «+» и «−» соответственно. Для того чтобы умножать A*B и B*A на форму добавлена кнопка «Обменять» для обмена матриц местами. Для поиска определителя необходимо нажать на кнопку «Опр-ль», для поиска обратной матрицы — кнопку «Обрат.», для вывода транспонированной матрицы — «Трансп.». Для умножения матрицы на число выше матрицы есть поле для ввода числа и кнопка «Умножить» — вводим число и нажимаем на кнопку «Умножить». Все результаты записываются в матрицу С.

Выйти из программы можно в любой момент, нажав на кнопку «Выход» в разделе меню.

Рис. 1. Внешний вид программы.

Блок-схема

Рис. 2. Блок-схема данной программы

Листинг программы

Самым интересным участком в коде программы — это вычисление определителя. Интересен он тем, что реализован с использовании рекурсии и данный блок используется в дальнейшем в программе для поиска обратной матрица. Ниже представлена функция для поиска определителя, а также блок схема (рис. 3).

private double Det(int[,] arr, int n)

{

double Determ = 0;

if (n == 2)

Determ = arr[0, 0] * arr[1, 1] - arr[0, 1] * arr[1, 0];

else

if (n == 3)

Determ = arr[0, 0] * arr[1, 1] * arr[2, 2] + arr[0, 1] * arr[1, 2] * arr[2, 0] + arr[2, 1] * arr[1, 0] * arr[0, 2] - arr[0, 2] * arr[1, 1] * arr[2, 0] - arr[0, 1] * arr[1, 0] * arr[2, 2] - arr[1, 2] * arr[2, 1] * arr[0, 0];

else

{

for (int i = 0; i < n; i++)

{

int[,] tmp = new int[n - 1, n - 1];

for (int j = 1; j < n; j++)

for (int k = 0; k < n; k++)

if (k != i)

if (k > i)

tmp[j - 1, k - 1] = arr[j, k];

else

tmp[j - 1, k] = arr[j, k];

Determ = Determ + arr[0, i] * Math.Pow(-1, i + 2) * Det(tmp, n - 1);

}

}

return Determ;

}

Рис. 3. Блок-схема наиболее интересной части программы: нахождение определителя.

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