Перегрузка методов сложения матриц - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д