Доброго времени суток!
Есть задание, которое требует реализовать класс матрицу и класс вектор. В моем случае, матрица - дочерняя от вектора.
Следующим, что нужно реализовать, так это перегрузку функций, которые умножают матрицу на матрицу; вектора на матрицу; матрицу на вектор; число на матрицу и тд. Если честно, я понятие не имею как это реализовать.
Написал функцию ARRAYxARRAY которая просто умножает элементы рядка на элементы столбика. НО, как сделать, что бы объекты, например, MATRIX и VECTOR использовать с этой функцией. И как потом еще перегрузить функцию для других операций(вектора*матрицу/матрицу*вектор).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Vector {
protected int row, column;
protected int[,] ARRAY;
protected int ROW {
get { return row; }
set { row = value; }
}
protected int COLUMN {
get { return column; }
set { column = value; }
}
public Vector() {
}
public Vector(int row, int column) {
this.row = ROW;
this.column = COLUMN;
ARRAY = new int[this.COLUMN, this.ROW];
}
public void EnterVector() {
Console.WriteLine("Choose type of vector:" +
"\nvector-row = [1]" +
"\nvector-col = [2]");
int variant = int.Parse(Console.ReadLine());
if (variant == 1) {
COLUMN = 1;
Console.Write("Enter the numbers of vector elements: ");
ROW = int.Parse(Console.ReadLine());
}
else if (variant == 2) {
ROW = 1;
Console.Write("Enter the numbers of vectror elements: ");
COLUMN = int.Parse(Console.ReadLine());
}
ARRAY = new int[COLUMN, ROW];
for (int col = 0; col < COLUMN; col++) {
for (int row = 0; row < ROW; row++) {
Console.Write("Enter the element of matrix cell[" + (col + 1) + ":" + (row + 1) + "]: ");
ARRAY[col, row] = int.Parse(Console.ReadLine());
}
}
}
public void Display() {
for (int col = 0; col < COLUMN; col++) {
Console.WriteLine("\n");
for (int row = 0; row < ROW; row++) {
Console.Write("{0}\t", ARRAY[col, row]);
}
}
Console.WriteLine();
}
public void ARRAYxARRAY(int[,] firstMatrix, int[,] secondMatrix, int[,] mult, int rowFirst, int columnFirst, int rowSecond, int columnSecond) {
for (int i = 0; i < rowFirst; i++) {
for (int j = 0; j < columnSecond; j++) {
mult[i, j] = 0;
}
}
for (int i = 0; i < rowFirst; i++) {
for (int j = 0; j < columnSecond; j++) {
for (int k = 0; k < columnFirst; k++) {
mult[i, j] += firstMatrix[i, k];
}
}
}
}
~Vector() {
Console.WriteLine("Vector has been denied.");
}
}
class Matrix : Vector {
public Matrix() {
}
public Matrix(int row, int column) {
this.row = ROW;
this.column = COLUMN;
ARRAY = new int[this.COLUMN, this.ROW];
}
public void EnterMatrix() {
Console.Write("Enter the numbers of matrix columns: ");
COLUMN = int.Parse(Console.ReadLine());
Console.Write("Enter the numbers of matrix rows: ");
ROW = int.Parse(Console.ReadLine());
ARRAY = new int[COLUMN, ROW];
for (int col = 0; col < COLUMN; col++) {
for (int row = 0; row < ROW; row++) {
Console.Write("Enter the element of matrix cell[" + (col + 1) + ":" + (row + 1) + "]: ");
ARRAY[col, row] = int.Parse(Console.ReadLine());
}
}
}
~Matrix() {
Console.WriteLine("Matrix has been denied.");
}
}
class Program
{
static void Main()
{
Vector VECTOR = new Vector();
VECTOR.EnterVector();
Console.Write("The vector is: ");
VECTOR.Display();
Console.WriteLine("");
Matrix MATRIX = new Matrix();
MATRIX.EnterMatrix();
Console.Write("\nThe matrix is: ");
MATRIX.Display();
//////////////////////////////
}
}