Перегрузка методов сложения матриц - C#
Формулировка задачи:
Задание: Создать класс
Не работает перегрузка методов =(
квадратная матрица
, поля класса - размерность и элементы матрицы. Методы класса: проверки, является ли матрица верхнетреугольной или нижнетреугольной, вывод матрицы. В классе предусмотреть методы перегрузки операций: сложение, вычитание, умножение матриц, умножение матрицы на число. Помогите пожалуйста. Заранее спасибо +)
Листинг программы
- {
- class Matrix
- {
- int n;
- double[,] A;
- double[,] B;
- public Matrix(int n)
- {
- this.n = n;
- A = new double[n, n];
- }
- public Matrix(int n)
- {
- this.n = n;
- B = new double[n, n];
- }
- public void Create()
- {
- Random rnd = new Random();
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- A[i, j] = rnd.Next(1, 10) + Math.Round(rnd.NextDouble(), 2);
- }
- }
- }
- public void Print()
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- Console.Write(A[i, j] + "\t");
- }
- Console.WriteLine();
- }
- }
- public void Create()
- {
- Random rnd = new Random();
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- B[i, j] = rnd.Next(1, 10) + Math.Round(rnd.NextDouble(), 2);
- }
- }
- }
- public void Print()
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- Console.Write(B[i, j] + "\t");
- }
- Console.WriteLine();
- }
- }
- public static Matrix operator +(Matrix A, Matrix B)
- {
- for (int i = 0; i < A.n; i++)
- {
- for (int j = 0; j < A.n; j++)
- {
- Matrix C[i, j] = A[i, j] + B[i, j];
- }
- }
- return C;
- }
- public static Matrix operator -(Matrix A, Matrix B)
- {
- for (int i = 0; i < A.n; i++)
- {
- for (int j = 0; j < A.n; j++)
- {
- Matrix D[i, j] = A[i, j] - B[i, j];
- }
- }
- return D;
- }
- public static Matrix operator *(Matrix A, Matrix B)
- {
- for (int i = 0; i < A.n; i++)
- {
- for (int j = 0; j < A.n; j++)
- {
- Matrix E[i, j] = A[i, j] + B[i, j];
- }
- }
- return E;
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Введите N");
- int n = int.Parse(Console.ReadLine());
- Matrix A = new Matrix(n);
- A.Create();
- A.Print();
- Matrix B = new Matrix(n);
- B.Create();
- B.Print();
- Matrix C = A + B;
- Console.ReadLine();
- }
- }
P.S. К этому еще событие написать надо (в этом я вообще "0")...
Решение задачи: «Перегрузка методов сложения матриц»
textual
Листинг программы
- public static Matrix operator *(Matrix A, Matrix B)
- {
- if(A.n!=B.n) throw ArgumentException();
- Matrix E = new Matrix(A.n);
- for (int i = 0; i < A.n; i++)
- {
- for (int j = 0; j < A.n; j++)
- {
- E.data[i, j] = 0;
- for (int k = 0; k < A.n; k++)
- {
- //вы тут перепутали порядок коефициентов
- E.data[i, j] = E.data[i, j] + A.data[i, k] * B.data[k, i];
- }
- }
- }
- return E;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д