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