Класс сложения матриц (Plus.cs) — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

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

2021-04-18 54
Класс сложения матриц (Plus.cs) 0.00 из 5.00 0 оценок
Заказать работу

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("Ошибка! Количество строк в матрицах не совпадает.");

       }

   }

}

}

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

using System;

using System.Collections.Generic;

using System.Windows;

 

namespace Матрица_1_0

{

class Parol

{

   public bool Dostup(string login, string parol)

   {

       List<string> log=new List<string>();

       log.Add("Абхаликов");

       log.Add("Булавский");

       log.Add("Булыга");

       log.Add("Горбенко");

       log.Add("Дядичкин");

       log.Add("Занько");

       log.Add("Казак");

       log.Add("Ким");

       log.Add("Козлова");

       log.Add("Кузнецов");

       log.Add("Кульчик");

       log.Add("Мурашко");

       log.Add("Мусаев");

       log.Add("Озолин");

       log.Add("Рябчинская");

       log.Add("Шаченок");

       log.Add("Романовский");

       log.Add("Якимович");

       log.Add("Ходар");

       log.Add("Сокольников");

       log.Add("Рутковский");

       log.Add("Серебренников");

       log.Add("Скоробогатый");

       log.Add("Чашинский");

       List<string> par = new List<string>();

       par.Add("Руслан");

       par.Add("Иван");

       par.Add("Владимир");

       par.Add("Алла");

       par.Add("Дмитрий");

       par.Add("Роман");

       par.Add("Алексей");

       par.Add("Дмитрий");

       par.Add("Виктория");

       par.Add("Валерий");

       par.Add("Сергей");

       par.Add("Михаил");

       par.Add("Эльдар");

       par.Add("Никита");

       par.Add("Надежда");

       par.Add("Татьяна");

       par.Add("Антон");

       par.Add("Павел");

       par.Add("Максим");

       par.Add("Максим");

       par.Add("Алексей");

       par.Add("Владимир");

       par.Add("Дмитрий");

       par.Add("Александр");

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

       {

           if (login == log[i])

           {

               if (parol == par[i])

               {

                   MessageBox.Show("Вход выполнен!");

                   MessageBox.Show("Здравствуйте "+par[i]);

                   return true;

               }

           }

       }

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

       return false;

   }

}

}

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

using System;

using System.Collections.Generic;

using System.Windows;

 

namespace Матрица_1_0

{

class Opr

{

   int n = 0;

   List<List<double>> M = new List<List<double>>();

   double[,] matr;

   public double DetGauss(int ind, Cache ch)

   {

       if (ind == 1)

       {

           if (ch.c == ch.d)

           {

               n = ch.c;

               matr = ch.matr1;

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

               {

                   List<double> Mr = new List<double>();

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

                   {

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

                   }

                   M.Add(Mr);

               }

           }

           else

           {

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

           }

       }

       if (ind == 2)

       {

           if (ch.e == ch.f)

           {

               n = ch.e;

               matr = ch.matr2;

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

               {

                   List<double> Mr = new List<double>();

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

                   {

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

                   }

                   M.Add(Mr);

               }

           }

           else

           {

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

           }

       }

       if (ind == 3)

       {

           if (ch.g == ch.h)

           {

               n = ch.h;

               matr = ch.res;

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

               {

                   List<double> Mr = new List<double>();

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

                   {

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

                   }

                   M.Add(Mr);

               }

           }

           else

           {

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

           }

       }

       double det = 1;

       int k = 0;

       const double E = 1E-9;

 

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

       {

           k = i;

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

           {

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

               {

                   k = j;

               }

           }

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

           {

               det = 0;

               break;

           }

           Swap(ref M, i, k);

 

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

           {

               det *= M[i][i];

           }

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

           {

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

           }

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

           {

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

               {

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

                   {

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

                   }

               }

           }

       }

       return det;

   }

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

   {

       double s = 0;

 

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

       {

           s = M[row1][i];

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

           M[row2][i] = s;

       }

   }

}

}

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

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows;

 

namespace Матрица_1_0

{

class Minus

{

   public void Min(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("Ошибка! Количество строк в матрицах не совпадает.");

       }

   }

}


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.043 с.