Как отобразить умножение функции? Доброго времени суток! Нужно сделать перегрузку функции, которые перемножают матрицу на матрицу, вектор на вектор, матрицу на вектор и тд. Функции написал, но есть маленькая проблема. После умножений каких либо функций, результата нет на экране. В чем проблема? Как это изменить?using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
class Matrix { protected int row, column; protected int[,] ARRAY;
public int ROW { get { return row; } set { row = value; } }
public int COLUMN { get { return column; } set { column = value; } }
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.WriteLine("enter the numbers of matrix columns: "); COLUMN = int.Parse(Console.ReadLine()); Console.WriteLine("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.WriteLine("enter the elements 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]; } } } }
public void ARRAYxARRAY(Matrix Matrix, int a) { for (int col = 0; col < COLUMN; col++) { for (int row = 0; row < ROW; row++) { ARRAY[col, row] = a * Matrix.ARRAY[col, row]; } } }
public void ARRAYxARRAY(int a, Matrix Matrix) { for (int col = 0; col < COLUMN; col++) { for (int row = 0; row < ROW; row++) { ARRAY[col, row] = a * Matrix.ARRAY[col, row]; } } }
public void ARRAYxARRAY(Matrix fMatrix, Matrix sMatrix) { for (int col = 0; col < COLUMN; col++) { for (int row = 0; row < ROW; row++) { ARRAY[col, row] += fMatrix.ARRAY[col, row] * sMatrix.ARRAY[col, row]; } } }
public void ARRAYxARRAY(Matrix Matrix, Vector Vector) { for (int col = 0; col < COLUMN; col++) { for (int row = 0; row < ROW; row++) { ARRAY[col, row] += Matrix.ARRAY[col, row] * Vector.ARRAY[col, row]; } } }
~Matrix() { Console.WriteLine("Matrix has been denied."); } }
class Vector : Matrix { 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.WriteLine("enter the number of vector elements: "); ROW = int.Parse(Console.ReadLine()); } else if (variant == 2) { ROW = 1; Console.WriteLine("enter the numbers of vector 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.WriteLine("enter the elements of matrix cell[" + (col + 1) + ":" + (row + 1) + "]: "); ARRAY[col, row] = int.Parse(Console.ReadLine()); } } }
public void ARRAYxARRAY(Vector fVector, Vector sVector) { for (int col = 0; col < COLUMN; col++) { for (int row = 0; row < ROW; row++) { ARRAY[col, row] += fVector.ARRAY[col, row] * sVector.ARRAY[col, row]; } } }
~Vector() { Console.WriteLine("Vector has been denied."); } }
class Program { static void Main() { Matrix MATRIX = new Matrix(); MATRIX.EnterMatrix(); Console.WriteLine("The matrix is: "); MATRIX.Display();
Console.WriteLine("\n");
Vector VECTOR = new Vector(); VECTOR.EnterVector(); Console.WriteLine("The matrix is: "); VECTOR.Display();
while (true) { Console.Write("Select anoperation:\n" + "\t1. matrix * matrix;\n" + "\t2. matrix * vector;\n" + "\t3. number * matrix;\n" + "\t4. vector * matrix;\n" + "\t5. vector * vector;\n" + "\t6. number * vectir;\n"); int choice = int.Parse(Console.ReadLine());
switch (choice) { case 1: Matrix MATRIXbyMATRIX = new Matrix(); MATRIXbyMATRIX.ARRAYxARRAY(MATRIX, MATRIX); MATRIXbyMATRIX.Display(); break; case 2: Matrix MATRIXbyVECTOR = new Matrix(); MATRIXbyVECTOR.ARRAYxARRAY(MATRIX, VECTOR); MATRIXbyVECTOR.Display(); break; case 3: Matrix NUMBERbyMATRIX = new Matrix(); Console.Write("enter the number to multiply by: "); int numb1 = int.Parse(Console.ReadLine()); NUMBERbyMATRIX.ARRAYxARRAY(numb1, MATRIX); NUMBERbyMATRIX.Display(); break; case 4: Matrix VECTORbyMATRIX = new Matrix(); VECTORbyMATRIX.ARRAYxARRAY(VECTOR, MATRIX); VECTORbyMATRIX.Display(); break; case 5: Matrix VECTORbyVECTOR = new Matrix(); VECTORbyVECTOR.ARRAYxARRAY(VECTOR, VECTOR); VECTORbyVECTOR.Display(); break; case 6: Matrix NUMBERbyVECTOR = new Matrix(); Console.Write("enter the number to multiply by: "); int numb2 = int.Parse(Console.ReadLine()); NUMBERbyVECTOR.ARRAYxARRAY(numb2, VECTOR); NUMBERbyVECTOR.Display(); break; } } } }
Проблема заключается в том, что после умножения функций результат не отображается на экране, потому что после выполнения умножения вы не выводите результат на экран.
Чтобы решить эту проблему, вам нужно добавить вызов метода Display() для отображения результата умножения на экран. Например, после выполнения умножения матриц на матрицу:
Matrix MATRIXbyMATRIX = new Matrix(); MATRIXbyMATRIX.ARRAYxARRAY(MATRIX, MATRIX); Console.WriteLine("Result of matrix * matrix operation:"); MATRIXbyMATRIX.Display();
Вы можете сделать то же самое для остальных операций умножения.
Добавьте вызов метода Display() после каждой операции умножения, чтобы увидеть результат на экране.
Проблема заключается в том, что после умножения функций результат не отображается на экране, потому что после выполнения умножения вы не выводите результат на экран.
Чтобы решить эту проблему, вам нужно добавить вызов метода Display() для отображения результата умножения на экран. Например, после выполнения умножения матриц на матрицу:
Matrix MATRIXbyMATRIX = new Matrix();MATRIXbyMATRIX.ARRAYxARRAY(MATRIX, MATRIX);
Console.WriteLine("Result of matrix * matrix operation:");
MATRIXbyMATRIX.Display();
Вы можете сделать то же самое для остальных операций умножения.
Добавьте вызов метода Display() после каждой операции умножения, чтобы увидеть результат на экране.