Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2018, 22:51   #1
laketych
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 37
По умолчанию Не отображает умножение функции

Доброго времени суток!
Нужно сделать перегрузку функции, которые перемножают матрицу на матрицу, вектор на вектор, матрицу на вектор и тд.
Функции написал, но есть маленькая проблема.

После умножений каких либо функций, результата нет на экране.
В чем проблема? Как это изменить?




Код:
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.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 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();
            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(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.Write("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 number of vector elements: ");
            ROW = int.Parse(Console.ReadLine());
        }
        else if (variant == 2) {
            ROW = 1;
            Console.Write("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.Write("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 * vector;\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(MATRIX.ROW,MATRIX.COLUMN);
                              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:
                    Vector VECTORbyVECTOR = new Vector(VECTOR.COLUMN, VECTOR.ROW);
                           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;
            }
        }
    }
}
laketych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отображает DBGrid MixanMM БД в Delphi 8 19.06.2015 17:41
Не отображает css stinger2012 HTML и CSS 1 10.08.2012 14:16
Кодировка, отображает ??? gromdel PHP 3 30.07.2012 21:47
не отображает апплет legendary Общие вопросы по Java, Java SE, Kotlin 2 10.06.2012 19:29
Ничего не отображает :( Ksy JavaScript, Ajax 1 06.02.2011 23:40