Перегрузка методов сложения матриц - 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы