Описать класс реализующий тип данных «вещественная матрица» - C#
Формулировка задачи:
Описать класс, реализующий тип данных «вещественная матрица» и работу с ними. Класс должен реализовывать следующие операции над матрицами: методы, реализующие проверку типа матрицы (квадратная, диагональная, нулевая, единичная, симметричная, верхняя треугольная, нижняя треугольная); операции сравнения на равенство/неравенство; доступ к элементу по индексам.
Написать программу, демонстрирующую все разработанные элементы класса.
Решение задачи: «Описать класс реализующий тип данных «вещественная матрица»»
textual
Листинг программы
- using System;
- namespace ConsoleApplication4
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Введите количество строк матрицы");
- int n = int.Parse(Console.ReadLine());
- Console.WriteLine("Введите количество столбцов матрицы");
- int m = int.Parse(Console.ReadLine());
- Console.WriteLine("Заполните матрицу");
- DoubleMatrix matrix = new DoubleMatrix(n,m);
- for (int i = 0; i < matrix.rows; i++)
- {
- for (int j = 0; j < matrix.cols; j++)
- {
- Console.Write("Введите элемент [{0},{1}] : ",i,j);
- matrix[i, j] = double.Parse(Console.ReadLine());
- }
- }
- Console.WriteLine("Матрица :");
- for (int i = 0; i < matrix.rows; i++)
- {
- for (int j = 0; j < matrix.cols; j++)
- {
- Console.Write(matrix[i, j]);
- }
- Console.WriteLine();
- }
- matrix.Method(); //нулевая или не нулевая
- if (matrix.Method1() == false) // проверка на семмитричность
- {
- Console.WriteLine("Матрица не симметричная");
- }
- else Console.WriteLine("Матрица симметричная");
- matrix.Method2(); // Проверка квадратная
- if (matrix.Method3()) // проверка на единичность
- {
- Console.WriteLine("Матрица единичная");
- }
- else Console.WriteLine("Матрица не единичная");
- if (matrix.Method4() == true) //Проверка на диагональность
- {
- Console.WriteLine("Матрица диагональная");
- }
- else Console.WriteLine("Матрица не диагональная");
- if (matrix.Method5())
- {
- Console.WriteLine("Матрица верхняя треугольная ");
- }
- else Console.WriteLine("Матрица не верхняя треугольная ");
- if (matrix.Method6())
- {
- Console.WriteLine("Матрица нижняя треугольная ");
- }
- else Console.WriteLine("Матрица не нижняя треугольная ");
- Console.WriteLine(matrix[0, 0]); //доступ к элементу по индексам
- Console.ReadKey();
- }
- }
- class DoubleMatrix
- {
- private double[,] matrix;
- public int rows, cols;
- private int Length;
- int r = 0;
- bool a = true, t = false;
- public DoubleMatrix(int rows, int cols)
- {
- this.rows = rows;
- this.cols = cols;
- matrix = new double[this.rows, this.cols];
- Length = rows * cols;
- }
- public double this[int index1, int index2]
- {
- get { return matrix[index1, index2]; }
- set { matrix[index1, index2] = value; }
- }
- public void Method() //нулевая или не нулевая
- {
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < cols; j++)
- {
- if (matrix[i, j] == 0)
- { r = r + 1; }
- }
- }
- if (r == cols * rows)
- { Console.WriteLine("Матрица нулевая"); }
- else { Console.WriteLine("Матрица не нулевая"); }
- }
- public bool Method1() // проверка на семмитричность
- {
- if (cols == rows)
- {
- for (int i = 0; i < matrix.GetLength(0); ++i)
- {
- for (int j = 0; j < matrix.GetLength(1); ++j)
- if (matrix[i, j] != matrix[j, i])
- {
- a = false;
- break;
- }
- if (!a) break;
- }
- return a;
- }
- else return false;
- }
- public void Method2() // Проверка квадратная
- {
- if (rows == cols)
- {
- Console.WriteLine("Матрица квадратная");
- }
- else Console.WriteLine("Матрица не квадратная");
- }
- public bool Method3() // проверка на единичность
- {
- if (rows == cols)
- {
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < cols; j++)
- {
- if (i == j && matrix[i, j] != 1)
- {
- return false;
- }
- else if (i != j && matrix[i, j] != 0)
- { return false; }
- }
- }
- return true;
- }
- return false;
- }
- public bool Method4() //Проверка на диагональность
- {
- if (rows == cols)
- {
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < cols; j++)
- {
- if (i != j)
- {
- if (matrix[i, j] == 0)
- {
- t = true;
- }
- else t = false;
- break;
- }
- }
- }
- }
- return t;
- }
- public bool Method5()
- {
- if (rows == cols)
- {
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < cols; j++)
- {
- if (matrix[i, j] != 0 && i > j)
- {
- return false;
- }
- }
- }
- return true;
- }
- return false;
- }
- public bool Method6()
- {
- if (rows == cols)
- {
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < cols; j++)
- {
- if (matrix[i, j] != 0 && i < j)
- {
- return false;
- }
- }
- }
- return true;
- }
- return false;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д