- •Введение.
- •Условие задания
- •Текст программы
- •Класс обработчиков главного окна (MainWindow.Xaml.Cs)
- •Класс транспонирования матрицы (at.Cs)
- •Класс умножения матрицы на число k (Axk.Cs)
- •Класс получения канонического вида и ранга матрицы (Kan.Cs)
- •Класс чтения матриц из файла (Re.Cs)
- •Класс записи результатов вычислений в файл (wr.Cs)
- •Класс произведения матриц (Umn.Cs)
- •Класс сложения матриц (Plus.Cs)
- •Класс проверки входа в программу (Parol.Cs)
- •Класс получения определителя матрицы (Opr.Cs)
- •Класс получения разности матрицы (Minus.Cs)
- •Класс получения минора матрицы (Mab.Cs)
- •Класс копирования результата в матрицу (Copir.Cs)
- •Класс хранения матричных данных (Cache.Cs)
- •Описание кода программы
- •Класс обработчиков главного окна (MainWindow.Xaml.Cs)
- •Класс транспонирования матрицы (at.Cs)
- •Класс умножения матрицы на число k (Axk.Cs)
- •Класс получения канонического вида и ранга матрицы (Kan.Cs)
- •Класс чтения матриц из файла (Re.Cs)
- •Класс записи результатов вычислений в файл (wr.Cs)
- •Класс произведения матриц (Umn.Cs)
- •Класс сложения матриц (Plus.Cs)
- •Класс проверки входа в программу (Parol.Cs)
- •Класс получения определителя матрицы (Opr.Cs)
- •Класс получения разности матрицы (Minus.Cs)
- •Класс получения минора матрицы (Mab.Cs)
- •Главное окно (рис. 4)
- •Результаты работы программы
- •Заключение
- •Список литературы
Класс записи результатов вычислений в файл (wr.Cs)
using System;
using System.Text;
using System.IO;
using System.Windows;
using Microsoft.Win32;
namespace Матрица_1_0
{
class WR
{
public void Save(Cache ch)
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = "c:\\";
save.Filter = "matr files (*.matr)|*.matr|All files (*.*)|*.*";
save.FilterIndex = 1;
save.RestoreDirectory = true;
if (save.ShowDialog() == true)
{
string[] zap = new string[ch.g+1];
for (int i = 0; i < ch.g+1; i++)
{
string add=null;
for (int j = 0; j < ch.h; j++)
{
if (i == 0)
{
add = ch.name2 + " " + ch.fam2;
}
else
{
if (j == ch.h - 1)
{
add += ch.res[i - 1, j].ToString();
}
else
{
add += (ch.res[i - 1, j].ToString() + " ");
}
}
}
zap[i] = add;
}
Encoding en=Encoding.GetEncoding(1251);
File.WriteAllLines(save.FileName, zap, en);
}
}
}
}
Класс произведения матриц (Umn.Cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace Матрица_1_0
{
class Umn
{
public void Umn2(Cache ch)
{
if (ch.d == ch.e)
{
double[,] matr = new double[ch.c, ch.f];
ch.g = ch.c;
ch.h = ch.f;
for (int i = 0; i < ch.c; i++)
{
for (int j = 0; j < ch.f; j++)
{
for (int k = 0; k < ch.d; k++)
{
matr[i, j] += ch.matr1[i, k] * ch.matr2[k, j];
}
}
}
ch.res = matr;
}
else
{
MessageBox.Show("Ошибка! Количество столбцов и строк в матрицах не совпадает.");
}
for (int i = 0; i < ch.g; i++)
{
for (int j = 0; j < ch.h; j++)
{
ch.res[i, j] = Math.Round(ch.res[i, j]);
}
}
}
}
}
Класс сложения матриц (Plus.Cs)
using System;
using System.Windows;
namespace Матрица_1_0
{
class Plus
{
public void Sum(Cache ch)
{
if (ch.c == ch.e)
{
if (ch.d == ch.f)
{
ch.g = ch.e;
ch.h = ch.f;
double[,] matr = new double[ch.g, ch.f];
for (int i = 0; i < ch.c; i++)
{
for (int j = 0; j < ch.d; j++)
{
matr[i, j] = (ch.matr1[i, j] + ch.matr2[i, j]);
}
}
ch.res = matr;
}
else
{
MessageBox.Show("Ошибка! Количество столбцов в матрицах не совпадает.");
}
}
else
{
MessageBox.Show("Ошибка! Количество строк в матрицах не совпадает.");
}
}
}
}