Создание для отдела логистики набора функций для работы с матрицами

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    919,19 Кб
  • Опубликовано:
    2015-04-28
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание для отдела логистики набора функций для работы с матрицами












Курсовая работа

По дисциплине

«Информатика»

«Создание для отдела логистики набора функций для работы с матрицами»


Содержание

Введение

1.Условие задания

2.Текст программы

2.1Класс обработчиков главного окна (MainWindow.xaml.cs)

2.2Класс транспонирования матрицы (AT.cs)

2.3Класс умножения матрицы на число k (Axk.cs)

2.4Класс получения канонического вида и ранга матрицы (Kan.cs)

2.5Класс чтения матриц из файла (Re.cs)

2.6Класс записи результатов вычислений в файл (WR.cs)

2.7Класс произведения матриц (Umn.cs)

2.8Класс сложения матриц (Plus.cs)

2.9Класс проверки входа в программу (Parol.cs)

2.10Класс получения определителя матрицы (Opr.cs)

2.11Класс получения разности матрицы (Minus.cs)

2.12Класс получения минора матрицы (Mab.cs)

2.13Класс копирования результата в матрицу (Copir.cs)

2.14Класс хранения матричных данных (Cache.cs)

3.Описание кода программы

3.1Класс обработчиков главного окна (MainWindow.xaml.cs)

3.2Класс транспонирования матрицы (AT.cs)

3.3Класс умножения матрицы на число k (Axk.cs)

3.4Класс получения канонического вида и ранга матрицы (Kan.cs)

3.5Класс чтения матриц из файла (Re.cs)

3.6Класс записи результатов вычислений в файл (WR.cs)

3.7Класс произведения матриц (Umn.cs)

3.8Класс сложения матриц (Plus.cs)

3.9Класс проверки входа в программу (Parol.cs)

3.10Класс получения определителя матрицы (Opr.cs

3.11Класс получения разности матрицы (Minus.cs)

3.12Класс получения минора матрицы (Mab.cs)

3.13Класс копирования результата в матрицу (Copir.cs)

3.14Класс хранения матричных данных (Cache.cs)

4.Описание интерфейса

4.1Форма входа (рис. 3)

4.2Главное окно (рис. 4)

5.Результаты работы программы

Заключение

Список литературы


Введение

Presentation Foundation. Windows Presentation Foundation (WPF, кодовое название - Avalon) - система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), имеющая прямое отношение к XAML (ЗАМЛ).вместе с .NET Framework 3.0 предустановлена в Windows Vista и Windows 7(.NET Framework 3.5 SP1). С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений.

Особенности технологии. В основе WPF лежит векторная система визуализации, не зависящая от разрешения устройства вывода и созданная с учетом возможностей современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая Язык XAML (Extensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трехмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление.

Графической технологией, лежащей в основе WPF, является DirectX, в отличие от Windows Forms, где используется GDI/GDI+. Производительность WPF выше, чем у GDI+ за счет использования аппаратного ускорения графики через DirectX. Также существует урезанная версия CLR, называющаяся WPF/E, она же известна как Silverlight.

Использование разметки XAML. XAML представляет собой XML, в котором фактически реализованы классы .NET Framework. Так же реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые, в свою очередь, разделяются до уровня векторных фигур и свойств/действий. Это позволяет легко задать стиль для любого элемента, например, Button (кнопка).

Средства разработки. Для работы с WPF требуется любой .NET-совместимый язык. В этот список входит множество языков: C#, VB, C++, Ruby, Python, Delphi (Prism) и многие другие. Для полноценной работы может быть использованы такие программные продукты как Visual Studio, так и Expression Blend. Первая ориентирована на программирование, а вторая - на дизайн и позволяет делать многие вещи, не прибегая к ручному редактированию XAML. Примеры этому - анимация, стилизация, состояния, создание элементов управления и так далее.Expression Blend. Microsoft Expression Blend (рис. 1) направлен на разработку дизайна веб-интерфейсов и графических настольных приложений.

Рис. 1. Microsoft Expression Blend

Ключевая особенность продукта в том, что Expression Blend и Visual Studio используют одно и то же расширение файла проекта. А значит теперь у разработчиков и дизайнеров будет существенно меньше конфликтов и противоречий.

К тому же, теперь не составит труда сразу же открыть созданный в Visual Studio проект в Expression Blend и, естественно, наоборот, на одном компьютере. Рассмотрим некоторые возможности продукта.

В Blend включен полный дизайнер WYSIWYG (свойство прикладных программ, в которых содержание отображается в процессе редактирования). При открытых страницах и элементах управления можно переключаться в режим дизайна, в режим XAML источника, либо совместить эти два режима на одном экране и работать с ними одновременно. Blend поддерживает редактирование при помощи векторной графики. Также у него есть поддержка добавления и редактирования множества элементов управления. Есть специальная иконка на панели инструментов дизайна (Grid, Stack, Canvas, Border, Scroll Viewer, и т.д.), инструментов редактирования текста (Text Box, Text Block, и т. д.) и многое другое.

Выбрав любой объект можно поиграть с его свойствами (вкладка Properties). Например, с цветовым представлением элементов и фона. Можно раскрасить объекты не только в интересные цвета, но и представить цвет в виде градиента (рис. 2).

А что вы скажете на то, что градиент может изменяться динамически во время того или иного действия? И это далеко не все возможности. Можно добавлять сколь угодно много различных сценариев анимации, накладывать звук, менять форму и стиль элементов. Expression Blend предоставляет максимум возможностей и гибкости для быстрой настройки под себя всех элементов. Что позволяет пофантазировать и поэкспериментировать с проектом.

Рис. 2. Использование градиента в проекте

Приятным дополнением является возможность разрабатывать приложения для Windows Phone 7. Теперь создавать приложений на основе панорам (panorama) или пайвотов (pivot) гораздо удобнее. Наглядно отображаются необходимые размеры и границы.

.Условие задания

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

. Текст программы

.1 Класс обработчиков главного окна (MainWindow.xaml.cs)

using System;System.Windows;System.Windows.Controls;System.Windows.Data;System.Windows.Input;Microsoft.Win32;System.Diagnostics;Матрица_1_0

{

/// <summary>

/// Interaction logic for MainWindow.xaml

/// </summary>partial class MainWindow : Window

{MainWindow()

{.InitializeComponent();

// Insert code required on object creation below this point.

}ch = new Cache();void Show(int ind)

{(ind == 1)

{.Text = null;(int i = 0; i < ch.c; i++)

{(int j = 0; j < ch.d; j++)

{.Text += (ch.matr1[i, j].ToString()+" ");

}.Text += "\n";

}

}(ind == 2)

{.Text = null;(int i = 0; i < ch.e; i++)

{(int j = 0; j < ch.f; j++)

{.Text += (ch.matr2[i, j].ToString()+" ");

}.Text += "\n";

}

}(ind == 3)

{.Text = null;(int i = 0; i < ch.g; i++)

{(int j = 0; j < ch.h; j++)

{.Text += (ch.res[i, j].ToString()+" ");

}.Text += "\n";

}

}

}void Button_Click(object sender, RoutedEventArgs e)

{login = Логин.Text.ToString();parol = Пароль.Password.ToString();par = new Parol();v = par.Dostup(login, parol);(v == true)

{

Авторизация.Visibility = Visibility.Collapsed;.fam2 = login;.name2 = parol;

}

}void New_Click(object sender, RoutedEventArgs e)

{Wind = new MainWindow();.Visibility = Visibility.Visible;.Авторизация.Visibility = Visibility.Collapsed;

}void AT_Click(object sender, RoutedEventArgs e)

{n = new AT();.ATR(1, ch);(3);

}void T_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}(M2.IsChecked == true)

{_2_Click(sender, e);

}(M1.IsChecked == true) { }

{(M2.IsChecked == true) { }

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void AT_2_Click(object sender, RoutedEventArgs e)

{n = new AT();.ATR(2, ch);(3);

}void Cl_Click(object sender, RoutedEventArgs e)

{.Close();

}void Op_M1_Click(object sender, RoutedEventArgs e)

{read = new RE();.Read(1, ch);(1);.Show("Автор файла: "+ch.name+" "+ch.fam);

}void Op_M2_Click_1(object sender, RoutedEventArgs e)

{read = new RE();.Read(2, ch);(2);.Show("Автор файла: " + ch.name + " " + ch.fam);

}void a_k_GotFocus(object sender, RoutedEventArgs e)

{_k.Text = null;

}void b_GotFocus(object sender, RoutedEventArgs e)

{_b.Text = null;

}void Copy_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}(M2.IsChecked == true)

{_Click(sender, e);

}(M1.IsChecked == true) { }

{(M2.IsChecked == true) { }

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void Ak1_Click(object sender, RoutedEventArgs e)

{k=0;ak = new Axk();

{= Convert.ToDouble(a_k.Text.ToString());.Axk2(1, k, ch);

}

{

MessageBox.Show("Ошибка! Вы не ввели число k");

}(3);

}void Ak2_Click(object sender, RoutedEventArgs e)

{k = 0;ak = new Axk();

{= Convert.ToDouble(a_k.Text.ToString());.Axk2(2, k, ch);

}

{

MessageBox.Show("Ошибка! Вы не ввели число k");

}(3);

}void K_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}

{(M2.IsChecked == true)

{_Click(sender, e);

}

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void Obr_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}

{(M2.IsChecked == true)

{_Click(sender, e);

}

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void obr1_Click(object sender, RoutedEventArgs e)

{opr = 0;(ch.c == ch.d)

{.g = ch.c;.h = ch.d;chislo = new Opr();= chislo.DetGauss(1, ch);(opr != 0)

{k = 1 / opr;[,] Soglmatr = new double[ch.c, ch.d];(int i = 0; i < ch.c; i++)

{(int j = 0; j < ch.d; j++)

{mab = new Mab();[i, j] = mab.Min(1, i, j, ch);

}

}.g++;.h++;.res = Soglmatr;tr = new AT();.ATR(3, ch);axk = new Axk();.Axk2(3, k, ch);(3);

}

{.Show("Ошибка! Данная матрица является вырожденной и не может иметь обратной матрицы!");

}

}

{.Show("Выбранная матрица не является квадратной!");

}

}void obr2_Click(object sender, RoutedEventArgs e)

{opr = 0;(ch.e == ch.f)

{.g = ch.e;.h = ch.f;chislo = new Opr();= chislo.DetGauss(2, ch);(opr != 0)

{k = 1 / opr;[,] Soglmatr = new double[ch.e, ch.f];(int i = 0; i < ch.e; i++)

{(int j = 0; j < ch.f; j++)

{mab = new Mab();[i, j] = mab.Min(2, i, j, ch);

}

}.g++;.h++;.res = Soglmatr;tr = new AT();.ATR(3, ch);axk = new Axk();.Axk2(3, k, ch);(3);

}

{.Show("Ошибка! Данная матрица является вырожденной и не может иметь обратной матрицы!");

}

}

{.Show("Выбранная матрица не является квадратной!");

}

}void Zakr_Click(object sender, RoutedEventArgs e)

{.Text = null;.Text = null;.Text = null;_k.Text = "a(k)";_b.Text = "b";_M1.Text = status_M2.Text = status_rM.Text = "Результат";.IsChecked = false;.IsChecked = false;.c = ch.d = ch.e = ch.f = ch.g = ch.h = 0;.fam = ch.name = "";.matr1 = ch.matr2 = ch.res = null;

}void S_Click(object sender, RoutedEventArgs e)

{sav = new WR();.Save(ch);

}void Sum_Click(object sender, RoutedEventArgs e)

{sum = new Plus();.Sum(ch);(3);

}void sl_Click(object sender, RoutedEventArgs e)

{_Click(sender, e);

}void Razn_Click(object sender, RoutedEventArgs e)

{m = new Minus();.Min(ch);(3);

}void Minus_Click(object sender, RoutedEventArgs e)

{_Click(sender, e);

}void Del_Click(object sender, RoutedEventArgs e)

{_Click(sender, e);[,] vrem = ch.matr2;vrem1 = ch.e;vrem2 = ch.f;.e = ch.g;.f = ch.h;.matr2 = ch.res;_Click(sender, e);.e = vrem1;.g = vrem2;.matr2 = vrem;(2);

}void razd_Click(object sender, RoutedEventArgs e)

{_Click(sender, e);

}void Umn_Click(object sender, RoutedEventArgs e)

{umn = new Umn();.Umn2(ch);(3);

}void umn_Click_1(object sender, RoutedEventArgs e)

{_Click(sender, e);

}void О_программе_Click(object sender, RoutedEventArgs e)

{win = new Window1();.Visibility = Visibility.Visible;

}void Delta_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}

{(M2.IsChecked == true)

{_Click(sender, e);

}

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void M_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}

{(M2.IsChecked == true)

{_Click(sender, e);

}

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void Пароль_KeyDown(object sender, KeyEventArgs e)

{(e.Key.Equals( Key.Enter))

{_Click(sender, e);

}

}void Логин_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)

{(e.Key.Equals(Key.Enter))

{

Пароль.Focus();

}

}void Opred1_Click(object sender, RoutedEventArgs e)

{delta = new Opr();opr = delta.DetGauss(1, ch);

status_M1.Text = ("Определитель матрицы равен " + opr.ToString());

Show(3);

}void Opred2_Click(object sender, RoutedEventArgs e)

{delta = new Opr();opr = delta.DetGauss(2, ch);

status_M2.Text =("Определитель матрицы равен "+ opr.ToString());

Show(3);

}void Min1_Click(object sender, RoutedEventArgs e)

{minor2=new Mab();minor=0;a = 0;b = 0;

{= Convert.ToInt32(a_k.Text) - 1;= Convert.ToInt32(b_b.Text) - 1;

}

{ .Show("Поля a(k) и b не заполнены");u;

}= minor2.Min(1, a, b, ch);_M1.Text =("Минор равен " +minor.ToString());: status_rM.Text = "Результат";

}void Min2_Click(object sender, RoutedEventArgs e)

{minor2 = new Mab();minor = 0;a = 0;b = 0;

{= Convert.ToInt32(a_k.Text) - 1;= Convert.ToInt32(b_b.Text) - 1;

}

{.Show("Поля a(k) и b не заполнены");u;

}= minor2.Min(2, a, b, ch);_M2.Text = ("Минор равен " + minor.ToString());: status_rM.Text = "Результат";

}void Логин_Initialized(object sender, EventArgs e)

{

Логин.Focus();

}void kop1_Click(object sender, RoutedEventArgs e)

{cop = new Copir();.C(1, ch);(1);

}void kop2_Click(object sender, RoutedEventArgs e)

{cop = new Copir();.C(2, ch);(2);

}void Kan1_Click(object sender, RoutedEventArgs e)

{kan = new Kan();.KV(1, ch);(3);

}void Kan2_Click(object sender, RoutedEventArgs e)

{kan = new Kan();.KV(2, ch);(3);

}void KV_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}

{(M2.IsChecked == true)

{_Click(sender, e);

}

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void R1_Click(object sender, RoutedEventArgs e)

{rang = new Kan();r=rang.Rang(1, ch);_M1.Text=("Ранг матрицы равен "+r.ToString());

}void R2_Click(object sender, RoutedEventArgs e)

{rang = new Kan();r = rang.Rang(2, ch);_M2.Text = ("Ранг матрицы равен " + r.ToString());

}void R_Click(object sender, RoutedEventArgs e)

{(M1.IsChecked == true)

{_Click(sender, e);

}

{(M2.IsChecked == true)

{_Click(sender, e);

}

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}void Справка1_Click(object sender, RoutedEventArgs e)

{path = @"D:\Работа\4 семместр\Курсовая\Матрица 1.0_Copy1\Матрица 1.0\Справка";

Process pr = new Process();.StartInfo.FileName = path + "\\Справка.chm";

pr.Start();

}

}

}

.2Класс транспонирования матрицы (AT.cs)

using System;Матрица_1_0

{AT

{void ATR(int ind, Cache ch)

{a=0, b=0;[,] matr=new double[a,b];(ind == 1)

{= ch.c;= ch.d;= ch.matr1;

}(ind==2)

{= ch.e;= ch.f;= ch.matr2;

}(ind == 3)

{= ch.g;= ch.h;= ch.res;

}[,] res = new double[b, a];(int i = 0; i < a; i++)

{(int j = 0; j < b; j++)

{[j,i] = matr[i, j];

}

}.g = b;.h = a;.res = res;

}

}

}

.3Класс умножения матрицы на число k (Axk.cs

using System;System.Collections.Generic;System.Linq;System.Text;Матрица_1_0

{Axk

{void Axk2(int ind, double k, Cache ch)

{a = 0, b = 0;[,] matr = new double[a, b];(ind == 1)

{= ch.c;= ch.d;=ch.matr1;

}(ind == 2)

{= ch.e;= ch.f;= ch.matr2;

}(ind == 3)

{= ch.g;= ch.h;= ch.res;.res = null;

}[,] res = new double[a, b];(int i = 0; i < a; i++)

{(int j = 0; j < b; j++)

{[i, j] = Math.Round( matr[i, j]*k, 3);

}

}.g = a;.h = b;.res = res;

}

}


.4 Класс получения канонического вида и ранга матрицы (Kan.cs)

using System;System.Collections.Generic;System.Linq;System.Text;Матрица_1_0

{Kan

{void KV(int ind, Cache ch)

{a=0,b=0,n=0;uchet = 0;[,] matr=new double[a,b];(ind==1)

{=ch.c;=ch.d;=ch.matr1;

}(ind == 2)

{=ch.e;=ch.f;=ch.matr2;

}:(n < a && n < b)

{del = matr[n, n];(del != 0)

{[] str = new double[b - n];umn = 0;(int i = n; i < b; i++)

{[n, i] = matr[n, i] / del;[i - n] = matr[n, i];

}(int i = n + 1; i < a; i++)

{= matr[i, n];(int j = n; j < b; j++)

{[i, j] = matr[i, j] - str[j - n] * umn;

}

}(int i = n + 1; i < b; i++)

{[n, i] = 0;

}(int i = n; i < a; i++)

{(int j = n; j < b; j++)

{(i == n || j == n)

{(matr[i, j] == 0)

{++;

}

}

}

}

}

}(uchet == ((a + b) - 2)-2*n && uchet!=0)

{=0;++;q;

}

{.g = a;.h = b;.res = matr;

}

}int Rang(int ind, Cache ch)

{(ind, ch);rang = 0;n = ch.g;m = ch.h;:vrem = 0;(int i = 0; i < n; i++)

{(int j = 0; j < m; j++)

{(i == n - 1 && ch.res[i,j]==0)

{++;

}

}

}(vrem == m)

{-;q;

}

{= n;

}rang;

}

}

}

2.5Класс чтения матриц из файла (Re.cs)

System;System.Collections.Generic;System.Text;System.IO;System.Windows;Microsoft.Win32;Матрица_1_0

{RE

{int a = 0, b;void Read(int ind, Cache ch)

{en = Encoding.GetEncoding(1251);[] ca = { ' ', ','};[] strarray;strline;<string> mas = new List<string>();myStream = null;openFileDialog1 = new OpenFileDialog();

.InitialDirectory = "c:\\";.Filter = "matr files (*.matr)|*.matr|All files (*.*)|*.*";.FilterIndex = 1;.RestoreDirectory = true;vrem = 0;(openFileDialog1.ShowDialog() != null)

{

{((myStream = openFileDialog1.OpenFile()) != null)

{(myStream)

{sr = new StreamReader(myStream, en);= sr.ReadLine();k = 0;(strline != null)

{= strline.Split(ca);= strarray.Length;.Add(strline);= sr.ReadLine();(k == 0)

{= b;(vrem < 3)

{[] strarray2 = mas[0].Split(ca);.name = strarray2[0];.fam = strarray2[1];-;++;

}

{.name = "Автор";

ch.fam = "отсутствует";++;

}

}++;

}

}.Close();

}

}

{.Show("Ошибка! Вы не выбрали файл.");

}

}l = 0;

double[,] matr = new double[a, b];(int i = 0; i < a+l; i++)

{(vrem < 3&&l==0)

{= 1;++;

}= (mas[i].Split(ca));(int j = 0; j < b; j++)

{(vrem < 3)

{[i - 1, j] = Convert.ToDouble(strarray[j]);

}

{[i, j] = Convert.ToDouble(strarray[j]);

}

}

}(ind == 1)

{.c = a;.d = b;.matr1 = matr;

}(ind == 2)

{.e = a;.f = b;.matr2 = matr;

}

}

}

}

.6 Класс записи результатов вычислений в файл (WR.cs)

using System;System.Text;System.IO;System.Windows;Microsoft.Win32;Матрица_1_0

{WR

{void Save(Cache ch)

{save = new SaveFileDialog();.InitialDirectory = "c:\\";.Filter = "matr files (*.matr)|*.matr|All files (*.*)|*.*";.FilterIndex = 1;.RestoreDirectory = true;(save.ShowDialog() == true)

{[] zap = new string[ch.g+1];(int i = 0; i < ch.g+1; i++)

{add=null;(int j = 0; j < ch.h; j++)

{(i == 0)

{= ch.name2 + " " + ch.fam2;

}

{(j == ch.h - 1)

{+= ch.res[i - 1, j].ToString();

}

{+= (ch.res[i - 1, j].ToString() + " ");

}

}

}[i] = add;

}en=Encoding.GetEncoding(1251);.WriteAllLines(save.FileName, zap, en);

}

}

}

}

.7Класс произведения матриц (Umn.cs)

using System;System.Collections.Generic;System.Linq;System.Text;System.Windows;Матрица_1_0

{Umn

{void Umn2(Cache ch)

{(ch.d == ch.e)

{[,] matr = new double[ch.c, ch.f];.g = ch.c;.h = ch.f;(int i = 0; i < ch.c; i++)

{(int j = 0; j < ch.f; j++)

{(int k = 0; k < ch.d; k++)

{[i, j] += ch.matr1[i, k] * ch.matr2[k, j];

}

}

}.res = matr;

}

{.Show("Ошибка! Количество столбцов и строк в матрицах не совпадает.");

}(int i = 0; i < ch.g; i++)

{(int j = 0; j < ch.h; j++)

{.res[i, j] = Math.Round(ch.res[i, j]);

}

}

}

}

}

2.8 ласс сложения матриц (Plus.cs)

using System;System.Windows;Матрица_1_0

{Plus

{void Sum(Cache ch)

{(ch.c == ch.e)

{(ch.d == ch.f)

{.g = ch.e;.h = ch.f;[,] matr = new double[ch.g, ch.f];(int i = 0; i < ch.c; i++)

{(int j = 0; j < ch.d; j++)

{[i, j] = (ch.matr1[i, j] + ch.matr2[i, j]);

}

}.res = matr;

}

{.Show("Ошибка! Количество столбцов в матрицах не совпадает.");

}

}

{.Show("Ошибка! Количество строк в матрицах не совпадает.");

}

}

}

}

.9 Класс проверки входа в программу (Parol.cs)

using System;System.Collections.Generic;System.Windows;Матрица_1_0

{Parol

{bool Dostup(string login, string parol)

{<string> log=new List<string>();.Add("Абхаликов");.Add("Булавский");.Add("Булыга");.Add("Горбенко"); .Add("Дядичкин");.Add("Занько");.Add("Казак");.Add("Ким");.Add("Козлова");.Add("Кузнецов");.Add("Кульчик");.Add("Мурашко");.Add("Мусаев");.Add("Озолин");.Add("Рябчинская");.Add("Шаченок");

log.Add("Романовский");.Add("Якимович");.Add("Ходар");.Add("Сокольников");.Add("Рутковский");.Add("Серебренников");.Add("Скоробогатый");.Add("Чашинский");

List<string> par = new List<string>();.Add("Руслан");.Add("Иван");.Add("Владимир");.Add("Алла");.Add("Дмитрий");.Add("Роман");.Add("Алексей");.Add("Дмитрий");

par.Add("Виктория");.Add("Валерий");.Add("Сергей");.Add("Михаил");.Add("Эльдар");.Add("Никита");.Add("Надежда");.Add("Татьяна");.Add("Антон");.Add("Павел");.Add("Максим");.Add("Максим");.Add("Алексей");.Add("Владимир");.Add("Дмитрий");.Add("Александр");

for (int i = 0; i < log.Count; i++)

{(login == log[i])

{(parol == par[i])

{.Show("Вход выполнен!");.Show("Здравствуйте "+par[i]);

return true;

}

}

}.Show("Вы ввели неправильные данные!");false;

}

}

}

2.10Класс получения определителя матрицы (Opr.cs)

using System;System.Collections.Generic;System.Windows;Матрица_1_0

{Opr

{n = 0;<List<double>> M = new List<List<double>>();[,] matr;double DetGauss(int ind, Cache ch)

{(ind == 1)

{(ch.c == ch.d)

{= ch.c;= ch.matr1;(int i = 0; i < n; i++)

{<double> Mr = new List<double>();(int j = 0; j < n; j++)

{.Add (matr[i, j]);

}.Add(Mr);

}

}

{.Show("Выбранная матрица не является квадратной!");

}

}(ind == 2)

{(ch.e == ch.f)

{= ch.e;= ch.matr2;(int i = 0; i < n; i++)

{<double> Mr = new List<double>();(int j = 0; j < n; j++)

{.Add(matr[i, j]);

}.Add(Mr);

}

}

{.Show("Выбранная матрица не является квадратной!");

}

}(ind == 3)

{(ch.g == ch.h)

{= ch.h;= ch.res;(int i = 0; i < n; i++)

{<double> Mr = new List<double>();(int j = 0; j < n; j++)

{.Add(matr[i, j]);

}.Add(Mr);

}

}

{.Show("Выбранная матрица не является квадратной!");

}

}det = 1; k = 0;double E = 1E-9;

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

{= i;(int j = i + 1; j < n; j++)

{(Math.Abs(M[j][i]) > Math.Abs(M[k][i]))

{= j;

}

}(Math.Abs(M[k][i]) < E)

{= 0;;

}(ref M, i, k);

(i != k) det *= -1;

{*= M[i][i];

}(int j = i + 1; j < n; j++)

{[i][j] /= M[i][i];

}(int j = 0; j < n; j++)

{((j != i) && (Math.Abs(M[j][i]) > E))

{(k = i + 1; k < n; k++)

{[j][k] -= M[i][k] * M[j][i];

}

}

}

}det;

}void Swap(ref List<List<double>> M, int row1, int row2)

{s = 0;(int i = 0; i < M[row1].Count; i++)

{= M[row1][i];[row1][i] = M[row2][i];

M[row2][i] = s;

}

}

}

}

.11Класс получения разности матрицы (Minus.cs)

using System;System.Collections.Generic;System.Text;System.Windows;Матрица_1_0

{Minus

{void Min(Cache ch)

{(ch.c == ch.e)

{(ch.d == ch.f)

{.g = ch.e;.h = ch.f;[,] matr = new double[ch.g, ch.f];(int i = 0; i < ch.c; i++)

{(int j = 0; j < ch.d; j++)

{[i, j] = (ch.matr1[i, j] - ch.matr2[i, j]);

}

}.res = matr;

}

{.Show("Ошибка! Количество столбцов в матрицах не совпадает.");

}

}

{.Show("Ошибка! Количество строк в матрицах не совпадает.");

}

}

}

.12 Класс получения минора матрицы (Mab.cs)

using System;System.Collections.Generic;System.Windows;System.Windows.Controls;Матрица_1_0

{Mab

{double Min(int ind, int a, int b, Cache ch)

{min = 0;(ind == 1)

{[,] vrem1 = new double[ch.c - 1, ch.d];[,] vrem2 = new double[ch.c - 1, ch.d-1];(a < ch.c && b < ch.d)

{.g = ch.c-1;.h = ch.d-1;(int i = 0; i < ch.c; i++)

{(int j = 0; j < ch.d; j++)

{(i<a)

{[i,j]=ch.matr1[i,j];

}(i>a)

{[i-1,j]=ch.matr1[i,j];

}

}

}(int i = 0; i < ch.c-1; i++)

{(int j = 0; j < ch.d; j++)

{(j < b)

{[i, j] = vrem1[i, j];

}(j > b)

{[i, j - 1] = vrem1[i, j];

}

}

}.res = vrem2;z = 0;y = 0;= Math.DivRem((a+b), 2, out y);delta = new Opr();(y == 0)

{= delta.DetGauss(3, ch);

}

{= delta.DetGauss(3, ch)*(-1);

}

}

{

MessageBox.Show("Вы ввели число большее чем размер матрицы!");

}

}(ind == 2)

{[,] vrem1 = new double[ch.e - 1, ch.f];[,] vrem2 = new double[ch.e - 1, ch.f - 1];(a < ch.e || b < ch.f)

{.g = ch.e - 1;.h = ch.f - 1;(int i = 0; i < ch.e; i++)

{(int j = 0; j < ch.f; j++)

{(i < a)

{[i, j] = ch.matr2[i, j];

}(i > a)

{[i - 1, j] = ch.matr2[i, j];

}

}

}(int i = 0; i < ch.e - 1; i++)

{(int j = 0; j < ch.f; j++)

{(j < b)

{[i, j] = vrem1[i, j];

}(j > b)

{[i, j - 1] = vrem1[i, j];

}

}

}.res = vrem2;z = 0;y = 0;= Math.DivRem((a + b), 2, out y);delta = new Opr();(y == 0)

{= delta.DetGauss(3, ch);

}

{= delta.DetGauss(3, ch) * (-1);

}

}

else

{.Show("Вы ввели число большее чем размер матрицы!");

}

}min;

}

}

}

.13Класс копирования результата в матрицу (Copir.cs)

using System;System.Collections.Generic;System.Linq;System.Text;Матрица_1_0

{Copir

{void C(int ind, Cache ch)

{(ind == 1)

{.c = ch.g;.d = ch.h;.matr1 = ch.res;

}(ind == 2)

{.e = ch.g;.f = ch.h;.matr2 = ch.res;

}

}

}

}

2.14Класс хранения матричных данных (Cache.cs)

using System;System.Collections.Generic;Матрица_1_0

{Cache

{int c, d, e, f, g, h;double[,] matr1, matr2, res;string fam, fam2, name, name2;void Zap(int a, int b, int ind, double[,] matr)

{(ind == 1)

{= a;= b;= matr;

}(ind == 2)

{= a;= b;= matr;

}(ind == 3)

{= a;= b;= matr;

}

}

}

}

3. Описание кода программы

.1Класс обработчиков главного окна (MainWindow.xaml.cs)

Данный класс содержит следующие блоки кода:ch = new Cache();

Объявление нового элемента класса Cache который используется во всех классах для доступа к сохраненным из файла матрицам.

public void Show(int ind) { … }

Эта функция используется для вывода на экран в соответствующее место соответствующую матрицу: она определяется параметром ind, затем перечисляется в цикле for и записывается в соответствующий Textbloc.

Данный обработчик записывает в переменные введенные логин и пароль, вызывает класс Parol.cs и проверяет на возможность входа в программу. Если вход выполнен введенные логин и пароль записываются в переменные для использования их при сохранении.login = Логин.Text.ToString(); - получение введенного логина.parol =Пароль.Password.ToString(); - получение введенного пароля.

Авторизация.Visibility = Visibility.Collapsed; - закрытие формы авторизации.

private void New_Click(object sender, RoutedEventArgs e) { … }

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

private void AT_Click(ob ject sender, RoutedEventArgs e) { … }

Обработчик создает новый элемент класса AT.cs и вызывает функцию транспонирования матрицы, передавая номер матрицы элемент Cache ch для доступа к матрице, и затем вызывает вывод результата на экран. То же самое делает обработчик private void AT_2_Click(object sender, RoutedEventArgs e), а обработчик private void T_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void Cl_Click(object sender, RoutedEventArgs e) { … }

Обработчик закрывает приложение.void Op_M1_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса чтения (Re.cs) и вызывает вывод матрицы на экран. То же самое для второй матрицы делает обработчик private void Op_M2_Click_1(object sender, RoutedEventArgs e) { … }.

private void a_k_GotFocus(object sender, RoutedEventArgs e) и private void b_GotFocus(object sender, RoutedEventArgs e)

Обработчики перехватывают получение фокуса текстовыми полями и очищают текст перед вводом (b_b.Text = null;).

private void kop1_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса Copir.cs и вызывает функцию копирования результата в первую матрицу. То же самое делает для второй матрицы обработчик private void kop2_Click(object sender, RoutedEventArgs e). А обработчик private void Copy_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void Ak1_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса Axk.cs, получает значение числа k из Textbox (k = Convert.ToDouble(a_k.Text.ToString());) и вызывает функцию умножения. После чего вызывает вывод результата на экран. То же самое делает для второй матрицы обработчик private void Ak2_Click(object sender, RoutedEventArgs e). А обработчик private void K_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void obr1_Click(object sender, RoutedEventArgs e)

Обработчик выполняет необходимые операции для получения обратной матрицы:

получает и задает необходимые значения;

создает новый объект класса Opr.cs и получает определитель матрицы вызвав соответствующую функцию;

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

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

То же самое для второй матрицы делает обраротчик private void obr2_Click(object sender, RoutedEventArgs e). А обработчик private void Obr_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void Zakr_Click(object sender, RoutedEventArgs e)

Обработчик закрывает работу с данными матрицами без закрытия программы путем очистки всех использующихся полей и очистки данных в классе Cache.cs кроме имени и фамилии вошедшего пользователя.

private void S_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса WR.cs и вызывает соответствующий метод для записи полученных результатов в файл.

private void Sum_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса Plus.cs и вызывается соответствующая функция позволяющая сложить две матрицы, после чего вызывается вывод на экран результатов. На этот обработчик ссылается обработчик функции сложения private void sl_Click(object sender, RoutedEventArgs e) доступный из меню «Функции».void Razn_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса вычитания матриц (private void Razn_Click(object sender, RoutedEventArgs e)), вызывает соответствующую функцию и вызывает вывод результата на экран. На этот обработчик ссылается обработчик того же действия функции доступной из меню «Функции» (private void Minus_Click(object sender, RoutedEventArgs e)).void Del_Click(object sender, RoutedEventArgs e)

Обработчик делит первую матрицу на вторую. Для этого:

вызывает функцию получения обратной матрицы от второй;

записывает вторую матрицу во временные переменные;

вызывает обработчик умножения матриц;

возвращает вторую матрицу на место;

вызывает вывод результата на экран.

Обработчик функции деления из меню «Функции» также ссылается на этот обработчик (private void razd_Click(object sender, RoutedEventArgs e)).

private void Umn_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса призведения матриц (Umn.cs) и вызывает соответствующую функцию умножения, Затем вызывает вывод результата на экран. Обработчик функции умножения из меню «Функции» также ссылается на этот обработчик (private void umn_Click_1(object sender, RoutedEventArgs e)).

private void О_программе_Click(object sender, RoutedEventArgs e)

Обработчик открывает дополнительно окно со сведениями о программе.

private void Opred1_Click(object sender, RoutedEventArgs e) и private void Opred2_Click(object sender, RoutedEventArgs e)

Обработчики создают новые объекты класса определителя (Opr.cs) и вызывают соответствующую функцию подсчета определителя, а затем вызывают вывод результата на экран. А обработчик private void Delta_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void Min1_Click(object sender, RoutedEventArgs e) и private void Min2_Click(object sender, RoutedEventArgs e)

Обработчик создает новый объект класса Mab.cs, получает значения чисел a и b и вызывая соответствующую функцию получает значение выбранного минора и записывает в поле результата. А обработчик private void M_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void Пароль_KeyDown(object sender, KeyEventArgs e)

Обработчик перехватывает нажатие клавиши Enter в поле Пароль и вызывает обработчик клавиши вход (Button_Click(sender, e);).

private void Логин_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)

Обработчик перехватывает нажатие клавиши Enter в поле Логин и передает фокус полю Пароль.void Логин_Initialized(object sender, EventArgs e)

Обработчик передает фокус полю логин во время запуска программы.

private void Kan1_Click(object sender, RoutedEventArgs e) и private void Kan2_Click(object sender, RoutedEventArgs e)

Обработчики создают новые объекты класса Kan.cs, вызывают соответствующую функцию, а затем вызывают вывод на экран результата. А обработчик private void KV_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void R1_Click(object sender, RoutedEventArgs e) и private void R2_Click(object sender, RoutedEventArgs e)

Обработчики создают новые объекты класса Kan.cs и вызывают соответствующую функцию ранга матрицы, а полученный результат записывают в соответствующие текстовые блоки. А обработчик private void R_Click(object sender, RoutedEventArgs e) проверяет радио клавиши и вызывает один из этих обработчиков или выдает сообщение об ошибке.

private void R_Click(object sender, RoutedEбоventArgs e)

Обработчик при нажатии в меню «Справка» клавиши Справка запускает chm справку по программе.

3.2Класс транспонирования матрицы (AT.cs)

Класс транспонирования матрицы содержит одну функцию (public void ATR(int ind, Cache ch)) позволяющую получить транспонированную матрицу из исходной. Данная функция принимает индекс транспонируемой матрицы и элемент ch класса Cache для доступа к выбранной матрице.

Для транспонирования создаются временные переменные, в которые записываются данные исходной матрицы. Затем создается пустая временная транспонированная матрица, которая заполняется путем перечисления в цикле for. Полученная матрица записывается в матрицу-результат, которую можно будет вывести на экран.

.3Класс умножения матрицы на число k (Axk.cs)

Класс умножения матрицы на число k позволяет получить матрицу, каждый элемент которой умножен на число k. Данная функция принимает индекс транспонируемой матрицы, число k и элемент ch класса Cache для доступа к выбранной матрице.

Для умножения матрицы на число k создаются временные переменные, в которые записываются данные исходной матрицы. Затем создается пустая временная матрица, которая заполняется в цикле for путем умножения каждого элемента матрицы на число k. Полученная матрица записывается в матрицу-результат, которую можно будет вывести на экран.

.4Класс получения канонического вида и ранга матрицы (Kan.cs)

В данном классе содержатся две матричные функции:void KV(int ind, Cache ch) - функция получения канонического вида выбранной матрицы:

В данной функции создаются временные переменные для записи в них исходной матрицы. Затем проверяется условие возможного выхода за пределы матрицы справа и снизу, после чего функция получает делитель для первой строки, и затем вычитает ее из ниже лежащих строк. И цикл повторяется так до последней строки.int Rang(int ind, Cache ch) - функция получения ранга выбранной матрицы:

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

.5Класс чтения матриц из файла (Re.cs)

В этом классе исходная матрица считывается из файла. Для этого:

создаются временные переменные для хранения открываемой матрицы, а также методы разделения элементов в строках открываемого файла;

создается декодер для русского текста (Encoding en = Encoding.GetEncoding(1251););

Создается окно для выбора открываемой матрицы и путем перечисления строк в открытом файле эти строки записываются во временное хранилище (List<string> mas = new List<string>();). Одновременно с записью матрицы происходит запись имени и фамилии автора создавшего эту матрицу, а также ее размер;

Затем полученный лист строк читается, и каждая строка разбивается на элементы по разделителю, которые затем записываются во временную матрицу. И эта матрица переносится в матрицу, которую можно вывести на экран.

3.6Класс записи результатов вычислений в файл (WR.cs)

Функция записи результатов принимает объект ch класса Cache для доступа к записываемой матрице. Создается окно сохранения данных где выбирается место хранения файла. После выбора места хранения в файл записывается автор и матрица переписанная в массив строк ().

.7Класс произведения матриц (Umn.cs)

Функция произведения матриц принимает объект ch класса Cache для доступа к умножаемым матрицам. Перед умножением проверяется условие равенства количества столбцов первой матрицы строкам второй матрицы. Если это условие не выполняется, то выдается сообщение об ошибке. После это матрицы умножаются путем суммирования умножения соответствующих элементов в строках и столбцах. Полученная матрица записывается в матрицу которую можно вывести на экран.

.8Класс сложения матриц (Plus.cs)

Функция сложения матриц принимает объект ch класса Cache для доступа к слаживаемым матрицам. Матрицы слаживаются путем перечисления всех элементов матрицы и сложения соответствующих элементов. Результат записывается в матрицу доступную для вывода на экран. Также проверяется условие равности размеров слаживаемых матриц.

.9Класс проверки входа в программу (Parol.cs)

Функция проверки входа в программу принимает строковые данные введенных логина пароля. Эти данные проверяются по двум листам возможных логинов и вращается подтверждение входа.

.10Класс получения определителя матрицы (Opr.cs)

Функция создает временное хранилище другого формата для вычисления определителя выбранной матрицы. Функция принимает индекс матрицы и объект класса Cache для доступа к матрице. Затем выбранная матрица записывается во временное хранилище которое используется в вычислении определителя методом Гаусса:

Используем перечисление листа, а число k приравниваем к числу i;

Через второе перечисление проверяем, какое из соответствующих чисел в соседних рядах больше, если первое - число k приравнивается к числу j.

Если второе число меньше установленной точности определитель обнуляется.

Вызывается функция перестановки строк местами (Swap(ref M, i, k););

После проверки остальных условий определитель умножается на минус единицу или на другой элемент.

Цикл повторяется до получения результата и определитель возвращается в вызвавший его обработчик.

.11Класс получения разности матрицы (Minus.cs)

Функция принимает объект класса Cache для доступа к матрицам. После проверки равности матриц путем перечисления соответствующие элементы матрицы два отнимаются от соответствующих элементов матрицы один. Результат записывается в матрицу доступную для вывода результата на экран.

3.12Класс получения минора матрицы (Mab.cs)

Функция принимает индекс матрицы, положение вычисляемого минора и объект класса Cache для доступа к выбранной матрице. Создаются одна временная матрица с удаленной строкой, и вторая с удаленным потом столбцом. Получившуюся матрицу записываем в результирующую матрицу и вызываем функцию подсчета определителя через объект класса Opr.cs. Если сумма номеров строки и столбца четная - минор равен определителю, если нечетная - минор равен минус определителю. Полученный минор возвращается в обработчик его вызвавший.

.13Класс копирования результата в матрицу (Copir.cs)

Функция принимает индекс матрицы и объект класса Cache для доступа к выбранной матрице. Выбранная матрица приравнивает свои значения к матрице-результату полученную после вычислений.

.14 Класс хранения матричных данных (Cache.cs)

Класс содержит переменные для хранения открытых матриц и результатов их вычислений. Также класс имеет функцию для записи этих переменных доступную из класса чтения файла (Re.cs).

4.Описание интерфейса

.1Форма входа (рис. 3)

Рис. 3. Форма входа

На форме входа расположены следующие элементы:

Текстовый блок «Логин», в которое пользователь вводит свой логин, и который получает фокус при загрузке.

Форма для ввода пароля, вводимого пользователем. Эта форма получает фокус при нажатии клавиши Enter в поле «Логин». При нажатии клавиши Enter в этом поле вызывается обработчик нажатия клавиши «Войти».

Клавиша «Войти». При ее нажатии выполняется вход в программу (при правильно введенных данных).

4.2 Главное окно (рис. 4)

Рис. 4. Главное окно

программа матрица данные интерфейс

В главном окне расположены следующие элементы:

В верхней части расположено меню программы, содержащее меню «Документ», «Функции» и «Справка»:

Меню «Документ» (рис. 5) содержит следующие элементы: «Новый» - открытие нового окно программы для работы с другими матрицами; «Открыть» - позволяет открыть первую или вторую матрицу, причем для некоторых функций важен порядок матриц; «Сохранить как…» - позволяет сохранить полученный результат с выбором места хранения и выбором формата файла; «Закрыть» - закрывает текущие вычисления; «Выход» - выход и закрытие программы.

Меню «Функции» (рис. 6) содержит следующие элементы: одинаковые функции для первой и второй матриц: «Транспонировать» - производит транспонирование матрицы; «Умножить на число k» - умножение матрицы на число k; «Обратить» - вычисление обратной матрицы; «Определитель» - вычисление определителя матрицы; «Минор» - вычисление минора матрицы по введенным числам a и b; «Ранг» - подсчет ранга матрицы; «Канонический вид» - получение канонического вида матрицы; «Копировать из результата» - заполнение матрицы результатами предыдущих вычислений.

А также в меню «Функции» присутствуют такие элементы как «Сложение» - сложение матриц, «Вычитание» - вычитание второй матрицы из первой, «Произведение» - умножение первой матрицы на вторую, «Частное» - деление первой матрицы на вторую.

Меню «Справка» (рис. 7) содержит следующие элементы: «О программе» - вызов окна информации о программе (рис. 8); «Справка» - вызов справки по программе (рис. 9).

Рис. 5. Меню «Документ»

Рис. 6. Меню «Функции»

Рис. 7. Меню «Справка»

Рис. 8. О программе

Рис. 9. Справка по программе

Ниже расположена панель функций (рис. 10), которая полностью повторяет меню «Функции» плюс возможность выбора матрицы, к которой применяется действие и поля для ввода чисел a, b, k. Вся панель функций представлена в графическом виде.

Рис. 10. Панель функций

В средней части расположены блоки отображения исходных и результирующей матриц.

В нижней части расположены поля «Результат» в которых выводятся результаты подсчета определителя, минора и ранга матрицы.

. Результаты работы программы

В результатах работы покажем результаты выполнения некоторых функций:

Произведение матриц (рис. 11);

Рис. 11. Произведение матриц

Деление матриц (рис. 12);

Обратная матрица плюс определитель (рис. 13) и другие функции.

Рис. 12. Деление матриц

Рис. 13. Определитель плюс обратная матрица

Заключение

В результате выполнения курсовой работы была создана программа названная «Матрица 1.0» - набор функций для работы с матрицами. Эта программа позволяет выполнять следующие функции: открытие и сохранение файла плюс авторство файла. Подсчет таких матричных функций как транспонирование, умножение на число k, подсчет обратной матрицы, определитель, минор, ранг, канонический вид, копирование из результата в матрицу, сложение матриц, вычитание, произведение и частное матриц. Также в программе содержится окно «О программе» и справка по программе. Были использованы различные техники при работе с функциями, переменными, массивами. Приложение содержит различные виды форм технологии Windows Presentation Foundation. Программа отличается простотой интерфейса, интуитивно понятным меню и лёгкостью управления.


Список литературы

.C#: учебный курс. Герберт Шилдт. - СПб.: Питер; К.: Издательская группа BHV, 2011. - 512с.

2.Мэтью Мак-Дональд WPF: Windows Presentation Foundation в .NET 4.0 с примерами на C# 2010 для профессионалов = Pro WPF in C# 2010: Windows Presentation Foundation with .NET 4.0. - М.: «Вильямс», 2011. - С. 1024.

3.С# 2008: ускоренный курс для профессионалов. Трей Неш. - ООО «ИД Вильямс», 2008. - 576с.

Похожие работы на - Создание для отдела логистики набора функций для работы с матрицами

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!