69494

Программа расчета определителя матрицы произвольного порядка

Курсовая

Информатика, кибернетика и программирование

Основание для разработки. Необходимость расчета большого количества определителей самых различных матриц на младших курсах и проблематичность проверки вычислений. Отсутствие легкодоступных аналогов в Интернет Задание для курсовой работы...

Русский

2014-10-05

614.5 KB

13 чел.

Государственный университет – Высшая школа экономики

Факультет Бизнес-информатики

Кафедра

Архитектуры программных систем

Дисциплина

Информатика и программирование

Курсовая работа по предмету

Программирование

на тему

«Программа расчета определителя матрицы произвольного порядка»

Пояснительная записка

Руководитель работы: Платонова О.В.

Исполнитель: студент группы 171(2)

Егоров И.А

Москва 2011

Содержание

  1.  Постановка задачи.          3
  2.  Спецификация программы.         3
  3.  Функциональная декомпозиция задачи.       4
  4.  Описание метода решения задачи по каждому функциональному модулю.  5
  5.  Схемы алгоритмов или структурограммы функциональных модулей.   6
  6.  Программная реализация функциональных модулей.     7
  7.  Тестирование разработанной программы.       10
  8.  Выводы по работе.          14

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

 

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

2. Спецификация программы

2.1. Название программы - «Определитель матрицы 1.0»

2.2. Основание для разработки.

  •  Необходимость расчета большого количества определителей самых различных матриц на младших курсах и проблематичность проверки вычислений.
    •  Отсутствие легкодоступных аналогов в Интернет
      •  Задание для курсовой работы

2.3. Назначение программы.

Программа создана, чтобы обеспечивать поддержку студентов во время работы с матрицами и определителями. При помощи созданного приложения Студент может изучать любопытные закономерности зависимости матрицы и её определителя.

2.4. Краткая характеристика области применения программы.

Программа рассчитывает определитель матрицы произвольного порядка, используя метод разложения по столбцу. Размер матрицы не ограничен, скорость решения задачи зависит от вычислительных мощностей компьютера.

Программа создана для использования студентами младших курсов Высших Учебных Заведений. С её помощью студенты могут проверять собственные вычисления и исследовать различные свойства матриц.

Дизайн программы максимально простой и интуитивно понятный, чтобы не занимать много места на экране и не мешать основному учебному процессу.

2.5 Требования к программному обеспечению компьютера.

     Программа представляет собой файл разрешения .exe, способный запускаться на всех наиболее распространенных ОС.

Для считывания из файла необходима поддержка формата .txt

  1.  Функциональная декомпозиция задачи

Пользователь

\

\

Рис.1 Графическое отображение функциональной декомпозиии задачи

Основными функциональными модулями программы являются:

Модуль 1 – Ввод порядка матрицы. (описан в методе button_1_click())

Программный модуль, в котором описан механизм считывания порядка матрицы и обработка исключений:

  •  Проверка порядка матрицы на ненулевое и положительное значение
  •  Игнорирование текстовых и прочих значений,  не подходящих под значение порядка матрицы
  •  Очистка поля для ввода в случае неправильного значения

Модуль 2 – Заполнение сгенерированной матрицы значениями (описан в методе button_5_click())

Программный модуль, в котором описан механизм заполнения матрицы данным вещественного типа:

  •  Выбор способа ввода данных
  •  В случае ввода вручную — контроль правильности введенных данных
  •  В случае ввода из файла — выбор файла, заполнение сетки данными, контроль правильности введенных данных
  •  Проверка на нулевые строки и столбцы

Модуль 3 – Расчет определителя (описан в методе Determinant (double [ , ] mat, int c))

Программный модуль, в котором описан метод расчета определителя:

  •  Рекурсивный метод
  •  Входные данные — сформированный двумерный массив из вещественных чисел и целочисленный порядок матрицы
  •  Выходные данные передаются в label2.Text для последующего вывода на экран Пользователя.

4. Описание метода решения задачи по каждому функциональному модулю.

 

  •  Модуль «Ввод порядка матрицы»

Для ввода информации создано поле типа ComboBox, в котором для выбора предоставляются порядки матрицы от 1  до 10, как самые распространенные. Разумеется, возможен ввод и более высоких порядков, но Пользователю предоставляется возможность сделать это собственноручно, для удобства.

Обработка исключений позволяет не ошибиться при вводе данных.

  •  Модуль «Заполнение сгенерированной матрицы значениями ».

Входные данные — вещественные числа, по модулю не превышающие 2^32.

Ввод данных производится вручную или считывается из файла формата .txt. В файле  — значения ячеек построчно через пробел. (Пример файла с данными — в  Приложении)

Выходные данные — определитель введенной матрицы, вещественное число, по  модулю не превышающее 2^32

Значения ячеек матрицы вводятся как вручную, так и из файла. Считывание из файла сделано с целью упростить ввод матриц высоких порядков. А вручную всегда можно исправить сделанные ошибки.

Проверка значений поможет обнаружить данные неверного формата и обнулит их. Таким образом, Пользователь не допустит ошибок и опечаток при заполнении таблицы.

Параллельно с заполнением таблицы значениями идет проверка матрицы на нулевые столбцы и строки. Если таковые находятся — определитель равен нулю.

 Разработка модели ввода и вывода данных

 Создана Windows Form, внутри которой осуществляются ввод и вывод данных.

  •  Ввод порядка матрицы осуществляется через ComboBox
    •  Ввод значений ячеек матрицы осуществляется через DataGridView, которая автоматически генерируется нужного размера, заданного Пользователем
    •  Вводить данные в таблицу можно как вручную, так и загрузив из файла.
    •  Вывод данных осуществляется при помощи label, текст которого изменяется в результате выполнения необходимых операций.

Разработка пользовательского интерфейса через приложение Windows Forms

Созданы следующие элементы управления средой Windows Forms 

  •  5 Кнопок (Buttons)
    •  Таблица DataGridView
    •  3 label для информирования Пользователя
    •  Меню выбора ComboBox – для ввода порядка матрицы

Отладка программы

  •  Проведен ряд проверок на выработку исключений. В частности, пустые строки и недопустимые значения одновременно, и отмена загрузки из файла. Найдены ошибки, которые успешно исправлены.

Через программу пропущено 2 файла, которые можно увидеть в приложении. Определитель матрицы высчитывается успешно и правильно.

  •  Модуль «Расчет определителя»

Это основной модуль программы, состоит из Determinant( double [ , ] mat, int c) рекурсивной функции, осуществляющей подсчет определителя способом разложения по столбцу.

 double [,] matвведённая Пользователем матрица, записанная в виде двумерного массива вещественных чисел.

Int c — порядок матрицы, вводится пользователем. Целое положительное число.

На выход из метода подается переменная result – вещественное число = определитель матрицы.

  1.  Схемы алгоритмов или структурограммы функциональных модулей.

Модуль 1 – Ввод порядка матрицы.

 

Модуль 2 – Заполнение сгенерированной матрицы значениями

Модуль 3 – Расчет определителя

 

6. Программная реализация функциональных модулей.

6.1. Распределение исходного кода по файлам проекта.

  1.  Program.cs – в программе обязательно присутствует стандартный класс с запускающим методом Main().
  2.  Form1.cs – в данном файле  содержится код класса-формы, которая выполняет основное взаимодействие с Пользователем.  Внутри этого класса осуществляются все проверки введенных данных на корректность, сообщения об ошибках и прочие элементы управления.
  3.  Determinant.csв данном файле содержится метод Count(), позволяющий высчитать определитель матрицы. Входные данные — двумерный массив со значениями и порядок матрицы
  4.  Resources.csавтоматически сгенерированный файл, содержащий фон, размеры и цвета элементов управления и их положение на экране.

  1.  Диаграмма классов

6.3 Связь между основными функциональными модулями и классами.

Модуль 1. «Ввод порядка матрицы»

Класс Form1.cs

Поля:

private ComboBox comboBox1 – поле для ввода пользователем порядка матрицы

private button button1;   - кнопка для запуска   метода button1_click_1();

Методы:

button1_click_1() – метод проверки данных, введенных в comboBox1, в случае успешного ввода запускает генерацию матрицы нужного порядка

Модуль 2. «Заполнение сгенерированной матрицы значениями»

Класс Form1.cs

Поля:

private button button5;   - кнопка для заполнения матрицы значениями из файла; запускает button5_click();

private button button2; - кнопка для запуска подсчета определителя; запускает метод button2_click()

private DataGridView DataGridView1 – сетка значений, генерируется автоматически, размер вводится Пользователем

Методы:

button5_click() – метод запускает диалоговое окно для выбора файла для загрузки. В случае успешного ввода заносит данные из файла в поле DataGridView1;

button2_click() - метод, запускающий ряд проверок данных, и затем, в случае успешного ввода - метод Determinant.Count()

Модуль 3. «Расчет определителя»

Класс Form1.cs

Поля:

private button button3;   - кнопка для перезапуска программы;

private button button4; - кнопка для выхода из программы;

Методы:

button3_click()метод перезапуска программы, не выходя из неё. Перезапускает приложение. Таким образом, обеспечивает массовость программы

button4_click() - метод выхода из программы после завершения. Выходит из приложения.

Класс Determinant.cs

Методы:

Count() – основной метод программы; рекурсивный метод; Входные данные — двумерный массив размерности, заданной Пользователем и размерность.

Выходные данные — значение определителя типа double

Рекурсивно раскладывает матрицу по первому столбцу

7.  Тестирование разработанной программы.

Главное окно программы

Рис.1 — Главное окно программы

  •  При введении данных неверного формата программа выводит уведомления об ошибках

Внесение данных в таблицу

Рис.2 — Сгенерированная таблица 8*8

  •  Таблица может быть сгенерирована любой положительной размерности.
  •   Скорость генерирования таблиц большой размерности зависит от производительности ПК

Ввод данных из файла:

Рис.3 — Выбор файла

  •  Файл — текстовый, формата .txt, в нём присутствуют элементы матрицы построчно, записанные через пробел. 

Рис.4 — Матрица, заполненная значениями из файла

Вывод определителя на экран:

Рис.5 — Вывод определителя

Окна уведомлений об ошибках

Рис.6 — Некоторые окна уведомлений Пользователя

8. Выводы по работе.

В процессе создания данной курсовой работы, мною было создано приложение «Определитель матрицы 1.0». Основной функциональной задачей приложения является расчет определителя произвольной, заданной Пользователем квадратной матрицы.

Программа была проверена на 2 файлах и многократном введении данных вручную. Ошибок в работе программы не было обнаружено. Результаты тестирования демонстрируют ее эффективность, быстродействие и надежность.

На данном этапе программу можно использовать для повседневной работы студентов, для проверки собственных знаний по предмету «Линейная Алгебра», а также для самостоятельного изучения нового материала и любопытных особенностей квадратных матриц.

  1.  Список использованной литературы.

  1.  Шилдт Г. Полный справочник по С#.: Пер. с англ. – М.: Издательский дом «Вильямс», 2004. – 752с.
  2.  Фролов А. В., Фролов Г.В. Визуальное проектирование приложений С#. – М.: КУДИЦ-ОБРАЗ, 2003. – 512с.
  3.  Н. Культин «Microsoft Visual C# в задачах и примерах»

Приложение 1

Код программы

Form1.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.IO;

using System.Windows.Forms;

namespace Курсовая

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

                  

           //Делаем нужные нам объекты видимыми, остальные - прячем.

           dataGridView1.Visible = false;//таблица, для ввода данных пользователем, т.е. Матрица

           comboBox1.Visible = true;//необходима для ввода пользователем порядка матрицы.

           label1.Visible = true;

           label2.Visible = false;

           label3.Visible = false;

           button1.Visible = true;//Осуществляет ввод порядка

           button2.Visible = false;//Осуществляет запуск механизма подсчета определитедля

           button3.Visible = false;//Осуществляет перезапуск программы

           button4.Visible = false;//Осуществляет выход из программы после удачного завершения

           button5.Visible = false;//Осуществляет считывание матрицы из файла     

       }

        private void button1_Click_1(object sender, EventArgs e)

       {

           int c = 0;

           try

           {

               c = int.Parse(comboBox1.Text);// с - порядок матрицы, введенный пользователем

               if (c <= 0)

               {

                   MessageBox.Show("Введите ненулевой положительный порядок матрицы!", "Ошибка", MessageBoxButtons.OK);

                   comboBox1.Text = "";

               }

               else

               {                    

                   //делаем видимыми элементы, неободимые для ввода ячеек матрицы

                   comboBox1.Visible = false;

                   label1.Visible = false;

                   button1.Visible = false;

                   dataGridView1.Visible = true;

                   button2.Visible = true;

                   button5.Visible = true;

                   //Запускаем цикл формирования матрицы нужного порядка

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

                   {

                       dataGridView1.Columns.Add("" + i, "" + (i + 1));

                       dataGridView1.Rows.Add();

                   }

               }

           }

           catch

           {

               MessageBox.Show("Введите целочисленный порядок матрицы!", "Ошибка!", MessageBoxButtons.OK);

               comboBox1.Text = "";

           }         

           

       }

       private void Form1_Load(object sender, EventArgs e)

       {

       }

       private void label1_Click(object sender, EventArgs e)

       {

       }

       private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

       {

       }

       private void button2_Click(object sender, EventArgs e)

       {//прячем кнопку подсчета и сетку

           label2.Text = "";//сбрасываем значение текстового поля

           int c = int.Parse(comboBox1.Text);//считываем порядок матрицы, введенный пользователем

           double[,] mat = new double[c, c];//формируем матрицу нужного порядка

           bool flag = true,//Флаг для проверки нулей в строках

               flag_off = false;//флаг для выхода из вычисления определителя, если несколько значений - несоответсвующего формата

           int count = 0;//переменная для подсчета, сколько нулей в строке являются нулями

           bool[] null_string = new bool[c];//одномерный массив для определения нулевых столбцов

                      

           for (int i = 0; i < c; i++)//заполняем массив

               null_string[i] = true;

           

           for (int i = 0; i < c; i++) //запускаем цикл заполнения матрицы данными из сетки

           {

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

               {

                   try//Попытка конвертировать данные, введенные Пользователем, в значения вещественного типа

                   {

                       mat[i, k] = Convert.ToDouble(dataGridView1[i, k].Value);//считываем данное из яцейки

                      

                   }

                   catch//Обработка ошибок

                   {

                       MessageBox.Show("Одно из введенных вами значений - недопустимого формата!","Ошибка ввода", MessageBoxButtons.OK);//Сообщение об ошибке

                       dataGridView1[i, k].Value = "0";//Обнуляем неверно введенное значение

                       count = 0;//сбрасываем счетчик нулей в строке

                       flag_off = true;//выходим из цикла, НЕ запуская расчеи определителя

                   }

                   if (mat[i, k] == 0)//Проверка на нулевой элемент

                   {

                       flag = false;//в строке есть хотя бы один нулевой элемент

                       count = count + 1;//количество нулевых элементов в строке больше на один

                   }

                   else null_string[k] = false;//в стобце есть ненулевые элементы

               }

              

               if (!flag && count == c)//если есть нулевой элемент, и таких элементов столько, сколько элементов в строке

               {

                   label2.Text = "0";//Определитель равен нулю (нулевая строка)

               }

               else

               {

                   count = 0;//сбрасываем счетчик нулевых элементов в строке

                   flag = true;//сбрасываем факт наличия нулевых элементов

               }

           }

           if (!flag_off)//Если НЕТ неверно введенных данных

           {

               if (label2.Text != "0")//Если нет пустых столбцов         

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

                       if (null_string[i] == false)

                       {

                           label2.Text = (Determinant.Count(mat, c)).ToString();//выводим значение на экран при помощи label2

                           

                           label2.Visible = true;

                           label3.Visible = true;

                           button2.Visible = false;

                           button3.Visible = true;

                           button4.Visible = true;

                           button5.Visible = false;

                           dataGridView1.Visible = false;

                           break;

                       }

           }

       }

       private void button3_Click(object sender, EventArgs e)//Перезапускает программу

       {

           Application.Restart();

       }

       private void button4_Click(object sender, EventArgs e)//Выходит из программы

       {

           Application.Exit();

       }

       private void button5_Click(object sender, EventArgs e)//Считывает файл

       {

           int c = int.Parse(comboBox1.Text);

           string [] A = new string[c];   

           openFileDialog1.ShowDialog();

           try

           {

               FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);

               StreamReader sr = new StreamReader(fs, Encoding.Default);

               int ryad = 0;

               while (!sr.EndOfStream)

               {

                   string cont = sr.ReadLine();

                   A = cont.Split(' ');

                   try

                   {

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

                           dataGridView1[i, ryad].Value = double.Parse(A[i]);

                   }

                   catch

                   {

                       MessageBox.Show("В выбранном файле - неподходящие данные. \n Выберите новый файл или исправьте данные вручную!", "Ошибка!", MessageBoxButtons.OK);

                       break;

                   }

                   ryad++;

               }

               sr.Close();

               fs.Close();

           }

           catch

           {

               MessageBox.Show("Вы не выбрали файл. Попробуйте еще раз.", "Ошибка!", MessageBoxButtons.OK);

               

           }

                   

       }

       private void button6_Click(object sender, EventArgs e)

       {

           System.Windows.Forms.Help.ShowHelpIndex(this, "Справка.htm");

       }        

   }

}

Program.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

using System.Text;

namespace Курсовая

{

   static class Program

   {

       /// <summary>

       /// The main entry point for the application.

       /// </summary>

       [STAThread]

       

       static void Main()

       {

           

           Application.EnableVisualStyles();

           Application.SetCompatibleTextRenderingDefault(false);

           Application.Run(new Form1());//Запуск основной формы приложения.

                       

       }     

   }

}

Determinant.cs

using System;

using System.Collections.Generic;

using System.Text;

namespace Курсовая

{

   public class Determinant

   {

       public static double Count(double[,] mat, int c)

       {

           

           double result = 0;// В эту переменную будем складывать промежуточные результаты

           // Если у нас матрица из одного столбца и одной строки - возвращаем элемент нулевого столбца нулевой строки, который у этой матрицы единственный (отсчёт ведётся с нуля)

           if (c == 1)

           {

               result = mat[0, 0];

               return result;

           }

           // Если у нас матрица 2х2, то возвращаем разность произведений элементов главной и побочной диагоналей.

           if (c == 2)

           {

               result = mat[0, 0] * mat[1, 1] - mat[0, 1] * mat[1, 0];

               return result;

           }

           //Рекурсивный метод для матриц размерностью 3 и выше.

           if (c > 2)

           {

               for (int i = 0; i < c; i++)// Пробегаемся переменной i по всем индексам элементов строки

               {

                   // создаём временный массив temp из вещественных чисел размером [кол. элементов с столбце минус один Х кол. эл. в строке минус один]

                   double[,] temp = new double[c - 1, c - 1];

                   // Раскладываем матрицу по столбцу: Мы должны сформировать матрицу для подсчёта минора для элемента матрицы a[0,i]

                   // Минор для элемента a[j,i] - это определитель матрицы, получающейся, если выбросить строку и столбец,

                   //в которых располагается элемент a[j,i]

                   // Получается, мы выбрасываем из матрицы верхний столбец и строку i

                   // Из каждой последующей строчки нам надо скопировать в новый массив temp элементы,

                   //которые идут до i-го элемента и элементы, которые идут после i-го элемента. Но не сам i-й элемент.

                   for (int j = 0; j < c - 1; j++)//Формируем массив temp

                   {

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

                           temp[j, k] = mat[j + 1, k];

                       for (int k = i + 1; k < c; k++)

                           temp[j, k - 1] = mat[j + 1, k];

                   }

                   // получили массив temp

                   /* теперь по определению, нам надо сложить все произведения

                   1) элементов a[0][i], i пробегает по всем индексам массива, на

                   2) соответствующий элементу a[0][i] минор и на

                   3) знак перестановки

                   */

                   // чтобы получить минор, нам надо найти определитель матрицы temp

                   // чтобы получить знак перестановки, нам надо возвести число (-1) в степень i(индекс, а не комплексное число).

                   // Прибавляем к уже существующему результату элемент матрицы mat[0,i], умноженный на знак перестановки и умноженный на определитель матрицы temp.

                   result += mat[0, i] * Math.Pow(-1, i) * Determinant.Count(temp, c - 1);

               }

           }

           return (result);//Вернуть результат на выход из метода.

       }

   }

}

Settings.Designer.cs

//------------------------------------------------------------------------------

// <auto-generated>

//     This code was generated by a tool.

//     Runtime Version:2.0.50727.4959

//

//     Changes to this file may cause incorrect behavior and will be lost if

//     the code is regenerated.

// </auto-generated>

//------------------------------------------------------------------------------

namespace Курсовая.Properties

{

   [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

   [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]

   internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase

   {

       private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

       public static Settings Default

       {

           get

           {

               return defaultInstance;

           }

       }

   }

}

Form1.Designer.cs

namespace Курсовая

{

   partial class Form1

   {

       /// <summary>

       /// Required designer variable.

       /// </summary>

       private System.ComponentModel.IContainer components = null;

       /// <summary>

       /// Clean up any resources being used.

       /// </summary>

       /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

       protected override void Dispose(bool disposing)

       {

           if (disposing && (components != null))

           {

               components.Dispose();

           }

           base.Dispose(disposing);

       }

       #region Windows Form Designer generated code

       /// <summary>

       /// Required method for Designer support - do not modify

       /// the contents of this method with the code editor.

       /// </summary>

       private void InitializeComponent()

       {

           System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));

           this.comboBox1 = new System.Windows.Forms.ComboBox();

           this.label1 = new System.Windows.Forms.Label();

           this.button1 = new System.Windows.Forms.Button();

           this.dataGridView1 = new System.Windows.Forms.DataGridView();

           this.button2 = new System.Windows.Forms.Button();

           this.button3 = new System.Windows.Forms.Button();

           this.button4 = new System.Windows.Forms.Button();

           this.label2 = new System.Windows.Forms.Label();

           this.label3 = new System.Windows.Forms.Label();

           this.button5 = new System.Windows.Forms.Button();

           this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();

           this.helpProvider1 = new System.Windows.Forms.HelpProvider();

           this.button6 = new System.Windows.Forms.Button();

           ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();

           this.SuspendLayout();

           //

           // comboBox1

           //

           this.comboBox1.Cursor = System.Windows.Forms.Cursors.IBeam;

           this.comboBox1.FormattingEnabled = true;

           this.comboBox1.Items.AddRange(new object[] {

           "1",

           "2",

           "3",

           "4",

           "5",

           "6",

           "7",

           "8",

           "9",

           "10",

           "..."});

           this.comboBox1.Location = new System.Drawing.Point(100, 139);

           this.comboBox1.Name = "comboBox1";

           this.comboBox1.Size = new System.Drawing.Size(200, 21);

           this.comboBox1.TabIndex = 1;

           this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);

           //

           // label1

           //

           this.label1.AllowDrop = true;

           this.label1.AutoSize = true;

           this.label1.BackColor = System.Drawing.Color.Transparent;

           this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.label1.ForeColor = System.Drawing.Color.White;

           this.label1.Location = new System.Drawing.Point(26, 65);

           this.label1.Name = "label1";

           this.label1.Size = new System.Drawing.Size(347, 29);

           this.label1.TabIndex = 2;

           this.label1.Text = "Введите порядок матрицы";

           this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;

           this.label1.Click += new System.EventHandler(this.label1_Click);

           //

           // button1

           //

           this.button1.AllowDrop = true;

           this.button1.AutoSize = true;

           this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;

           this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.button1.Location = new System.Drawing.Point(63, 204);

           this.button1.Name = "button1";

           this.button1.Size = new System.Drawing.Size(265, 30);

           this.button1.TabIndex = 3;

           this.button1.Text = "Перейти к заполнению матрицы";

           this.button1.UseVisualStyleBackColor = true;

           this.button1.Click += new System.EventHandler(this.button1_Click_1);

           //

           // dataGridView1

           //

           this.dataGridView1.AllowUserToAddRows = false;

           this.dataGridView1.AllowUserToDeleteRows = false;

           this.dataGridView1.AllowUserToResizeColumns = false;

           this.dataGridView1.AllowUserToResizeRows = false;

           this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;

           this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

           this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;

           this.dataGridView1.Location = new System.Drawing.Point(4, 2);

           this.dataGridView1.Name = "dataGridView1";

           this.dataGridView1.Size = new System.Drawing.Size(380, 202);

           this.dataGridView1.TabIndex = 4;

           //

           // button2

           //

           this.button2.AllowDrop = true;

           this.button2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;

           this.button2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.button2.Location = new System.Drawing.Point(193, 210);

           this.button2.Name = "button2";

           this.button2.Size = new System.Drawing.Size(144, 49);

           this.button2.TabIndex = 5;

           this.button2.Text = "Высчитать определитель!";

           this.button2.UseVisualStyleBackColor = true;

           this.button2.Click += new System.EventHandler(this.button2_Click);

           //

           // button3

           //

           this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.button3.Location = new System.Drawing.Point(12, 152);

           this.button3.Name = "button3";

           this.button3.Size = new System.Drawing.Size(170, 46);

           this.button3.TabIndex = 6;

           this.button3.Text = "Перезапустить";

           this.button3.UseVisualStyleBackColor = true;

           this.button3.Click += new System.EventHandler(this.button3_Click);

           //

           // button4

           //

           this.button4.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.button4.Location = new System.Drawing.Point(202, 152);

           this.button4.Name = "button4";

           this.button4.Size = new System.Drawing.Size(170, 46);

           this.button4.TabIndex = 7;

           this.button4.Text = "Выход";

           this.button4.UseVisualStyleBackColor = true;

           this.button4.Click += new System.EventHandler(this.button4_Click);

           //

           // label2

           //

           this.label2.AutoSize = true;

           this.label2.BackColor = System.Drawing.Color.White;

           this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.label2.Location = new System.Drawing.Point(162, 100);

           this.label2.Name = "label2";

           this.label2.Size = new System.Drawing.Size(0, 25);

           this.label2.TabIndex = 8;

           //

           // label3

           //

           this.label3.AutoSize = true;

           this.label3.BackColor = System.Drawing.Color.Transparent;

           this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.label3.ForeColor = System.Drawing.Color.White;

           this.label3.Location = new System.Drawing.Point(38, 65);

           this.label3.Name = "label3";

           this.label3.Size = new System.Drawing.Size(324, 29);

           this.label3.TabIndex = 9;

           this.label3.Text = "Определитель матрицы:";

           //

           // button5

           //

           this.button5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.button5.Location = new System.Drawing.Point(12, 210);

           this.button5.Name = "button5";

           this.button5.Size = new System.Drawing.Size(159, 49);

           this.button5.TabIndex = 10;

           this.button5.Text = "Заполнить матрицу из файла";

           this.button5.UseVisualStyleBackColor = true;

           this.button5.Click += new System.EventHandler(this.button5_Click);

           //

           // openFileDialog1

           //

           this.openFileDialog1.FileName = "openFileDialog1";

           //

           // helpProvider1

           //

           this.helpProvider1.HelpNamespace = "C:\\Users\\acer\\Desktop\\Курсовая\\Курсовая\\Курсовая\\bin\\Debug\\Справка.htm";

           //

           // button6

           //

           this.button6.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

           this.button6.Location = new System.Drawing.Point(343, 222);

           this.button6.Name = "button6";

           this.button6.Size = new System.Drawing.Size(40, 36);

           this.button6.TabIndex = 11;

           this.button6.Text = "?";

           this.button6.UseVisualStyleBackColor = true;

           this.button6.Click += new System.EventHandler(this.button6_Click);

           //

           // Form1

           //

           this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

           this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

           this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));

           this.ClientSize = new System.Drawing.Size(384, 262);

           this.Controls.Add(this.button6);

           this.Controls.Add(this.button5);

           this.Controls.Add(this.label3);

           this.Controls.Add(this.label2);

           this.Controls.Add(this.button4);

           this.Controls.Add(this.button3);

           this.Controls.Add(this.button2);

           this.Controls.Add(this.dataGridView1);

           this.Controls.Add(this.button1);

           this.Controls.Add(this.label1);

           this.Controls.Add(this.comboBox1);

           this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

           this.Name = "Form1";

           this.Text = "Определитель матрицы 1.0";

           this.Load += new System.EventHandler(this.Form1_Load);

           ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();

           this.ResumeLayout(false);

           this.PerformLayout();

       }

       #endregion

       private System.Windows.Forms.ComboBox comboBox1;

       private System.Windows.Forms.Label label1;

       private System.Windows.Forms.Button button1;

       private System.Windows.Forms.DataGridView dataGridView1;

       private System.Windows.Forms.Button button2;

       private System.Windows.Forms.Button button3;

       private System.Windows.Forms.Button button4;

       private System.Windows.Forms.Label label2;

       private System.Windows.Forms.Label label3;

       private System.Windows.Forms.Button button5;

       private System.Windows.Forms.OpenFileDialog openFileDialog1;

       private System.Windows.Forms.HelpProvider helpProvider1;

       private System.Windows.Forms.Button button6;

   }

}

Приложение 2.

Файлы для проверки

  1.  matrix.txt — матрица 10*10

1 2 3 4 5 47 4567 3 3 32

6 7 8 9 34 3422 3656 35 4 5

4 4 4 4 45 3 66 653 457 7

-556 456 3 5 4 5 63 6 363 32

-56543 3456 4 6 5 5 7 5 5 43

34 5 56 5 4 456 7 3 56 3

1 2 3 5 5 4 56 6 5 8964

23 5643 56 3 646 34 6 34 56 0

1 34 34 6 4 21 1 1 23 5

7 65 46 7 48 78 4 6 74 23

  1.  mat50.txt – матрица 50*50, годная для проверки матриц и более низкого порядка.

0 -15 6 17 9 -8 7 5 -11 -20 12 -2 13 -18 5 2 3 -14 2 -13 9 13 -3 -10 -18 -4 19 8 12 14 6 12 1 -16 13 -11 0 -19 -14 -20 11 -7 -6 1 3 2 13 9 -6 2

6 -1 -4 10 2 6 8 -4 14 -7 -8 18 12 -5 -7 19 16 9 -12 -4 -19 2 -20 1 -5 -4 -1 16 6 0 2 -10 -6 -10 -13 -13 -4 11 1 -14 1 -16 -14 12 7 12 1 19 -13 3

6 -16 0 17 0 -16 -2 14 -5 -14 -13 11 9 -6 11 -18 4 2 -13 -15 3 -16 -13 -18 15 17 -4 -13 14 2 14 0 8 -17 14 -3 9 -4 9 -17 8 1 -4 -6 19 9 -5 12 -19 4

-12 19 11 -18 -20 1 17 -2 -18 3 8 -9 19 13 -9 7 -17 6 -1 -7 -8 -12 12 -16 -4 -19 8 12 -18 -15 1 3 -14 -10 -7 15 8 5 -17 -7 0 -9 -7 -15 -5 -3 2 3 -17 -8

5 9 -8 8 -9 -20 -14 7 6 18 12 -16 -5 16 -19 -16 -15 9 -1 -4 18 -2 3 -14 12 -19 14 6 9 18 -1 -15 9 10 0 12 -10 -3 18 -7 9 -19 19 -16 0 -5 15 -4 -17 -10

-8 12 -17 7 -7 -13 -14 -14 15 -10 -15 -1 18 7 -2 7 -5 5 -4 -12 13 7 11 -15 6 16 -2 -2 6 -4 -14 -3 2 -2 5 7 -19 -18 -4 -8 6 -16 2 7 -12 -11 -17 -9 6 12

-20 -11 -20 15 -3 5 -20 18 -20 -3 8 7 -1 -2 -17 7 16 -1 -19 10 5 -7 -11 -17 2 8 -15 -17 17 -3 12 -14 11 13 -4 16 -3 7 -20 -20 6 -17 -19 19 3 18 4 -17 4 0

-8 3 -10 15 -13 6 -20 16 -8 8 0 17 -19 2 4 1 15 6 -18 -13 -10 -12 -1 -19 -16 2 -9 -11 -1 3 -17 -19 -1 -4 -16 -11 16 16 6 9 16 0 -5 -9 0 9 -19 -1 -6 -18

-18 18 -19 -4 -11 -17 -16 -11 10 4 -5 10 -4 9 4 -2 -3 4 -3 -5 4 19 -20 -8 -10 9 13 -13 0 -5 1 12 15 -3 0 -15 -20 -18 -13 -19 -16 7 -15 -19 -6 -15 -16 6 7 -18

-9 -4 -19 19 -3 -17 18 9 -14 -1 -11 17 8 -5 -17 3 15 18 -12 -1 -2 -5 -3 -4 -10 16 13 19 17 -15 5 -13 0 -3 -16 -16 10 15 -20 -3 -14 -10 16 7 11 -13 19 10 17 11

-10 -15 -3 -13 4 15 19 5 9 0 -11 19 11 -20 14 -19 -4 -10 -9 19 12 19 18 10 -8 -13 -2 10 4 -18 17 -17 -19 -14 15 -1 10 -7 13 -12 -15 -15 -14 0 -13 -13 -1 15 12 9

11 8 -2 17 18 -10 -13 6 14 -4 -3 -12 -20 6 2 -14 17 5 -15 -6 -9 -17 -3 -17 14 7 12 -3 3 -16 8 2 17 14 -9 -11 4 -16 -13 4 -8 -17 -2 -4 11 16 -16 0 17 -19

-10 14 10 -2 -3 7 -9 -5 -17 -10 -2 9 -17 9 8 14 -9 -15 -5 -7 1 12 -3 0 -19 -12 4 -20 -8 17 3 -8 0 2 13 13 12 -1 -3 3 17 -11 -20 17 -14 3 19 9 7 16

5 18 -16 4 -1 -2 -3 -11 -4 -11 -18 -9 -18 -15 7 -15 -11 1 15 15 -18 12 8 11 -5 -9 12 0 -6 -2 -11 15 -8 -5 -8 4 -13 15 -18 -5 -4 2 -18 -13 1 6 -14 15 -11 -20

-6 -2 13 12 14 13 -10 -7 -12 -13 5 16 15 17 -20 -14 18 7 13 -17 17 -7 -2 -1 -2 -1 9 0 -10 9 -15 16 -9 -7 -16 10 -18 -1 1 -1 -7 14 6 15 10 -1 7 -15 -13 -6

7 -1 -18 -15 -17 -20 -20 -7 -6 -6 -16 9 -18 -1 -18 8 5 1 13 -11 -16 -1 -15 -7 9 -17 6 2 9 18 12 3 -7 15 -19 5 14 -15 -10 -17 10 8 -15 -14 -5 4 11 -13 13 -19

13 -14 -9 18 -10 -13 -7 8 -5 19 -7 -3 4 -5 2 0 -4 -13 -3 -4 13 0 -10 9 -1 -5 -6 19 18 -15 -9 -1 9 8 -16 6 -8 -5 5 13 -8 -14 10 -10 10 -8 -16 9 3 15

-12 4 9 -4 -13 -7 15 2 -2 14 13 -6 10 -11 7 14 7 15 -9 16 -12 -19 1 3 -16 7 9 -20 19 -14 -9 5 -5 -17 17 7 9 -8 1 10 10 9 16 11 -20 18 -4 0 2 15

5 -12 -3 7 7 -14 -18 -14 -8 -1 4 14 3 -8 2 -12 18 6 -8 -20 -15 -6 -6 0 -15 -2 -15 10 3 -14 -10 -11 -3 -17 1 -17 -13 8 -5 10 5 2 -20 -19 -14 16 -14 3 -12 11

19 9 -12 2 10 -10 13 16 1 -12 -19 -9 3 -14 -12 -6 -3 -1 11 -1 -19 -10 -9 1 -6 2 -6 -7 -6 -11 -8 1 2 11 -14 1 -20 14 -7 -10 -10 -10 -14 -13 8 -7 19 13 12 11

-2 6 12 9 10 8 -2 6 -12 -13 15 0 2 -9 16 0 9 11 19 7 -6 3 -14 0 -12 11 -17 -17 12 -19 2 0 0 2 11 6 9 12 -19 -2 -18 -6 6 -15 -6 10 7 15 -9 -12

3 -12 14 -16 -3 15 -1 -9 0 18 4 -6 13 -14 4 -5 19 19 0 -11 10 16 9 1 4 19 17 -19 -14 -2 -17 -12 12 4 -3 -6 6 -4 -15 15 -13 -2 -8 -18 13 8 0 -1 0 19

11 7 -6 -19 -3 7 -2 -8 -1 -3 17 -3 -15 -19 15 -4 1 -11 9 -10 8 2 14 4 -18 -8 4 6 7 16 -1 -3 1 -14 7 -5 14 11 -14 10 16 -7 16 7 18 9 -8 -10 -13 -3

-14 -9 10 -11 -9 -12 13 9 19 -16 -18 11 5 3 18 -1 16 19 -6 -1 2 10 -18 18 -6 -6 6 -14 6 -8 -20 -7 -1 -11 10 -12 7 -9 14 -1 2 -16 12 -18 7 -16 8 -7 9 -2

13 -7 16 8 15 -5 -12 11 15 17 1 6 -17 6 -16 8 -8 -5 12 10 12 4 -16 14 16 -2 18 -20 -10 -10 5 -7 -3 -12 -2 6 -3 11 -6 -5 19 16 -5 17 17 16 -20 -15 17 19

11 -7 0 19 5 -11 -11 -19 11 -3 -4 -12 0 5 -9 -12 -11 14 -13 -2 -9 1 -20 -3 10 15 -12 -14 17 -20 -3 12 -17 -9 -1 -8 12 -2 2 -11 -4 -4 19 17 18 11 -5 10 5 9

6 -15 18 -1 7 -11 -8 -17 -12 9 -20 -18 -16 10 19 4 -16 -11 -14 19 -5 10 -8 17 -19 15 1 -17 -1 19 0 -3 1 -12 -7 -9 14 3 3 -11 19 9 -10 12 -11 -6 -9 -11 17 -6

6 -15 4 5 -7 16 13 -20 -3 12 7 -11 3 -12 -11 2 1 15 -4 7 9 1 5 16 -20 6 0 -1 8 7 3 -8 -15 -16 -8 -6 13 15 14 -3 -2 13 -14 11 2 10 -15 -19 3 6

12 -5 13 -11 4 -15 0 7 5 7 -5 -7 -8 10 -12 -5 -17 -1 15 14 9 6 -19 18 -11 16 -5 13 -6 -10 0 -1 16 -19 15 -13 -2 16 0 -13 14 -15 -11 -13 -18 -16 0 -5 3 -14

6 6 -15 8 17 -14 -6 14 -20 8 10 6 -7 -5 -14 15 -3 -9 15 -20 16 -13 18 8 19 3 -4 13 15 -16 -5 19 -10 -13 3 14 -7 -13 -17 8 12 3 15 11 -3 -12 11 13 -19 -14

6 -12 0 2 -10 -1 7 -3 9 -6 9 1 19 15 -8 10 -5 -14 11 -8 2 -10 -12 -14 -12 -8 -9 -13 -10 11 11 2 11 9 -2 -14 -2 8 16 -16 -14 16 -3 9 19 -9 4 -20 -2 6

12 5 -18 8 4 -4 -20 -6 -7 17 -13 0 -13 17 2 -14 9 -11 -4 -14 -8 7 -11 7 -14 6 12 -2 -14 17 7 -10 8 3 18 -14 0 -18 -16 -18 -15 -16 -6 18 16 5 9 0 -14 13

1 -5 3 -8 -6 -15 -5 -6 2 18 3 1 -13 -4 -10 16 12 3 18 -5 5 6 -15 -6 -20 -12 -8 -9 10 0 17 -8 -8 -7 -5 -8 7 -4 -11 13 11 -14 0 -14 -2 3 16 17 8 -20

13 -15 1 11 -13 14 -11 -12 -9 -15 12 -16 4 -18 -19 -9 -11 13 -20 17 -11 -4 -7 -15 4 -1 -14 18 16 -4 -9 -6 2 10 7 11 11 0 -14 1 -18 -2 -16 -17 -20 7 1 -2 -16 -13

-6 -18 17 11 10 -3 12 -5 -13 7 8 -9 -8 15 14 -2 1 13 -6 -10 0 9 7 -1 14 11 -9 -11 -15 16 17 8 13 8 -18 -11 -3 11 19 -11 18 -5 -7 -2 12 11 -15 -11 -11 2

-15 8 -17 14 7 4 -5 -3 16 19 -15 2 -10 -10 9 19 -3 4 12 5 -20 10 13 -15 -9 -16 -5 -12 6 -17 5 -18 -20 2 10 -11 5 19 -19 -3 13 19 15 -20 -16 -5 -16 -18 9 13

-6 1 -4 4 1 -5 14 18 3 2 -11 -14 10 13 -6 -17 2 7 -1 -1 -6 -2 3 -6 11 -20 14 13 -20 15 -20 -8 -1 13 8 -16 5 -5 -19 -5 -5 7 -5 -2 -12 7 -12 -18 5 -19

12 -4 2 -11 -2 16 18 -18 13 0 0 -20 17 7 2 16 7 17 -16 -10 -3 -13 6 -16 -16 7 -18 -16 -14 -17 12 12 -13 19 -18 3 10 -11 -5 12 -15 3 1 1 14 -5 9 8 15 -8

19 -9 18 -5 3 5 10 -2 -16 10 13 13 16 9 8 8 12 17 4 19 -14 -3 2 -9 -16 14 5 -15 -10 9 17 -7 -12 13 -16 0 14 11 -4 -3 13 -9 -15 4 19 -9 7 12 12 -14

2 12 -16 16 -14 2 9 6 -9 9 -20 4 -13 -5 13 -1 5 -18 5 -13 13 -20 1 -14 -14 14 -8 17 -8 12 -13 13 -8 -16 -14 -15 -11 -8 7 2 11 -13 0 7 -3 -12 -16 9 11 -1

6 4 -14 4 -8 2 -10 17 10 -9 -11 11 -6 -1 1 -14 -8 -17 -12 7 -10 -8 -6 -17 -4 5 0 14 9 17 10 2 -14 13 -15 2 6 7 11 4 14 -9 1 -5 -8 19 13 -19 -15 -10

16 -20 1 -17 -12 -7 -10 -18 -12 7 -19 -4 -12 12 1 6 4 1 -7 18 0 4 -8 3 13 18 11 19 10 -4 12 -2 9 -2 -19 9 -19 -17 4 11 -8 3 -1 -16 2 -2 -17 9 13 6

-5 -8 8 -14 10 -8 7 17 -10 -11 2 -9 -8 11 14 2 6 9 11 11 4 0 16 1 6 16 -16 -13 -20 -6 14 -18 -15 -16 -19 0 10 2 8 9 -18 -16 13 -6 -11 -19 -9 7 -11 -20

11 -6 17 -18 -19 14 -5 -14 0 14 -13 0 16 15 -5 0 -15 -13 10 -6 12 -16 -19 -18 9 0 7 2 -8 4 4 -4 18 -20 2 0 -16 -17 -17 -14 -16 3 -19 13 1 1 -13 17 19 8

15 -16 17 15 -13 7 -7 15 -8 1 -14 13 14 16 -11 10 2 16 -7 14 -4 -18 -16 3 -11 -12 -18 -13 0 -13 -8 10 2 3 8 0 -1 -17 12 15 -14 -12 10 1 -20 -9 9 -15 4 11

19 -9 4 -15 -9 12 -20 -7 5 19 4 -14 -5 -16 -12 -4 -10 -10 -13 9 -9 -1 -17 -2 7 -13 -9 2 3 17 -2 17 2 8 -12 -19 -14 -3 -9 15 -1 -15 -3 13 -10 -20 12 6 -7 3

-20 -2 17 14 0 0 -12 -15 -3 -16 1 -2 10 7 0 6 3 6 16 -13 -10 13 19 -9 -11 -15 -19 -10 -13 7 -6 5 -12 19 16 -20 -20 8 -12 7 13 -20 -20 -13 -6 -19 -6 10 -8 4

-3 -14 10 -14 -7 -13 -1 5 4 -6 -1 17 18 10 9 15 -11 10 10 -1 6 14 -2 -12 -7 -10 13 11 17 -12 10 -9 17 3 -11 -12 14 -18 6 9 1 -6 -17 13 -13 15 -19 -11 -2 -2

12 4 19 12 17 2 7 1 12 -17 -6 7 8 -4 3 -12 -20 -5 0 0 -19 -14 -16 -19 18 -8 11 4 -20 -2 -12 3 -7 -2 -5 -14 -9 -15 5 6 1 -8 -10 3 -5 14 5 7 -11 19

15 5 9 18 -3 5 0 18 14 5 11 -18 0 -7 14 10 -6 -11 -20 -3 16 14 9 13 18 8 16 0 6 -16 6 -17 -5 -19 3 2 14 -6 -20 9 6 -7 -9 -20 15 -2 11 16 9 4


Ввод порядка матрицы

Загрузка значений ячеек матрицы из файла

Ввод значений ячеек матрицы вручную.

Получение результата определителя

Перезапуск программы

Выход из программы

Ввод Пользователем значения в ComboBox

Проверка на принадлежность к целым числам

Проверка на положительность

Занесение порядка матрицы в таблицу

Генерация таблицы заданного порядка

Порядок положительный, целый

Ошибка!

Обнуление значения, просьба ввести значение заново

Порядок — целое число

Вывод сгенерированной матрицы на экран

Выбор пути ввода: вручную или из файла

Выбор файла с данными через OpenFileDialog

Выбор успешен?

Из файла

Вручную

Ввод данных

Проверка введенных данных

Занесение данных в двумерный массив

Нет

Да

Неверно

Ввод данных — двумерного массива значений и порядка матрицы

Порядок матрицы = 1?

Det = a[0,0]

да

нет

Порядок матрицы = 2?

нет

да

Det = a[0,0]*a[1,1] -

a[1,0]*a[0,1]

Создаем цикл для перебора всех элементов первого столбца

Создаем минор для каждого элемента — массив размера (порядок - 1; порядок - 1)

Det += a[0, i] * Math.Pow(-1, i) * Determinant(temp, c - 1);

Вывод результата на экран пользователя


 

А также другие работы, которые могут Вас заинтересовать

39707. Реклама 15.09 KB
  Прямая реклама по почте лично. Реклама в прессе газеты журналы. Печатная реклама каталоги плакаты. Экранная и радиореклама.
39708. Дистрибуция в маркетинге 19.84 KB
  Дистрибуция для поставщика продукции это создание системы управления продажами которая основывается на управлении и планировании продаж в различных каналах продаж сбыта. Оба взгляда на дистрибуцияю верны. В широком смысле дистрибуция это распределение. Дистрибуция или место plce один из четырех элементов маркетинга входящих в маркетингмикс 4P .
39709. Маркетинговая логистика 17.29 KB
  В маркетинговой логистике существенную роль играют современные информационные технологии: компьютерыкассовые терминалы; единообразная кодировка товаров; системы спутникового слежения за транспортировкой; электронный обмен данных и перевод денег. Понятие доступность продукции играет важную роль в логистической концепции являясь как целью так и одной из основных характеристик функционирования логистической системы. В маркетинговой логистике выделяют следующие основные стадии: постановку целей системы; определение текущего состояния;...
39710. Маркетинговая информация 15.37 KB
  Выделяют следующие типы информации: 1 по месту сбора: а внутренняя любая информация полученная из финансовохозяйственной отчетности и документации фирмы предприятия организации; 6 внешняя информация собираемая за пределами организации в том числе подготовленная статистическими агентствами государственными и общественными организациями; информация публикуемая в СМИ; информация рекламного и коммерческого характера.; б вторичная уже существующая информация собираемая для различных других целей но может быть использована для...
39713. Понятие маркетинга, цели, принципы и функции маркетинга 17.15 KB
  Производственная: организация производственных товаров организация материальнотехнического снабжения управление качеством и конкурентоспособностью продукции. Сбытовая: организация системы товародвижения организация системы формирования спроса и стимулирования сбыта и системы продаж реклама товарная политика организация сервиса ценовая политика. Управления и контроля: организационные принципы управления и контроля планирование и информационное обеспечение маркетинга организация системы коммуникаций на предприятии управление рисками.
39714. Этапы развития маркетинга 17.05 KB
  Так в это время спрос намного превышает предложение и поэтому любой производитель может продать свой товар важную роль играет количество товара а не его качество. В определенный момент монополия конкретного товара становится тормозом развития своего рынка поэтому либо вмешивается государство антимонопольная политика либо фирма вынуждена переориентировать свою деятельность препятствуя падению покупательского спроса. Задачей производителя было произвести как можно больше товара и как можно изощреннее его продать. Все это привело к...
39715. Стратегическое планирование 15.63 KB
  Не используя преимущества стратегического планирования организации в целом и отдельные люди будут лишены четкого способа оценки цели и направления корпоративного предприятия. Процесс стратегического планирования обеспечивает основу для управления членами организации.Система стратегического планирования дает возможность акционерам и менеджменту компаний определиться с направлением и темпом развития бизнеса очертить глобальные тенденции рынка понять какие организационные и структурные изменения должны произойти в компании чтобы она стала...