Как написать перегрузку функций для векторов и матриц? Доброго времени суток! Есть задание, которое требует реализовать класс матрицу и класс вектор. В моем случае, матрица - дочерняя от вектора. Следующим, что нужно реализовать, так это перегрузку функций, которые умножают матрицу на матрицу; вектора на матрицу; матрицу на вектор; число на матрицу и тд. Если честно, я понятие не имею как это реализовать. Написал функцию 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(); ////////////////////////////// } }
Для реализации перегрузки функций для умножения матриц и векторов, вам нужно будет изменить ваш класс Vector и добавить методы для умножения.
В классе Vector вы можете добавить метод Multiply для умножения вектора на вектор, вектора на матрицу и матрицы на вектор. В методе Multiply вы можете определить логику умножения в зависимости от переданных параметров.
Примерно так:
public class Vector { // остальной код класса Vector оставляем без изменений public int[,] Multiply(int[,] matrix) { // реализация умножения вектора на матрицу } public int[] Multiply(int[] vector) { // реализация умножения вектора на вектор } // дополнительный метод для умножения матрицы на вектор public int[] Multiply(Matrix matrix) { // реализация умножения матрицы на вектор } }
Затем в методе Main вашей программы вы можете вызывать эти методы для умножения векторов и матриц:
Vector vector = new Vector(); vector.EnterVector(); Console.Write("The vector is: "); vector.Display(); Matrix matrix = new Matrix(); matrix.EnterMatrix(); Console.Write("\nThe matrix is: "); matrix.Display(); // Умножение вектора на матрицу int[,] resultMatrix = vector.Multiply(matrix.GetArray()); // Вывод результата // ... // Умножение матрицы на вектор int[] resultVector = vector.Multiply(matrix); // Вывод результата // ...
Таким образом, вы сможете перегрузить функции для умножения векторов и матриц и использовать их в вашей программе.
Для реализации перегрузки функций для умножения матриц и векторов, вам нужно будет изменить ваш класс Vector и добавить методы для умножения.
В классе Vector вы можете добавить метод Multiply для умножения вектора на вектор, вектора на матрицу и матрицы на вектор. В методе Multiply вы можете определить логику умножения в зависимости от переданных параметров.
Примерно так:
public class Vector {// остальной код класса Vector оставляем без изменений
public int[,] Multiply(int[,] matrix) {
// реализация умножения вектора на матрицу
}
public int[] Multiply(int[] vector) {
// реализация умножения вектора на вектор
}
// дополнительный метод для умножения матрицы на вектор
public int[] Multiply(Matrix matrix) {
// реализация умножения матрицы на вектор
}
}
Затем в методе Main вашей программы вы можете вызывать эти методы для умножения векторов и матриц:
Vector vector = new Vector();vector.EnterVector();
Console.Write("The vector is: ");
vector.Display();
Matrix matrix = new Matrix();
matrix.EnterMatrix();
Console.Write("\nThe matrix is: ");
matrix.Display();
// Умножение вектора на матрицу
int[,] resultMatrix = vector.Multiply(matrix.GetArray());
// Вывод результата
// ...
// Умножение матрицы на вектор
int[] resultVector = vector.Multiply(matrix);
// Вывод результата
// ...
Таким образом, вы сможете перегрузить функции для умножения векторов и матриц и использовать их в вашей программе.