Функция перемножения матриц c

Функция перемножения матриц c

Задача: разработать на C++ программу, выполняющую умножение двух матриц. Из курса высшей математики известно, что произведение двух матриц имеет смысл только тогда, когда число столбцов матрицы А совпадает с числом строк матрицы В.

Поэтому в приведённом ниже фрагменте кода задаём ввод пользователем одной и той же переменной — n числа столбцов матрицы А и числа строк матрицы В. Затем вводятся число строк матрицы А и число столбцов матрицы В.

Код C++

cout "Enter cols count in matrix A and rows count in matrix B: " ;

cout "Enter rows count in matrix A: " ;

cout "Enter cols count in matrix B: " ;

Далее выделяем память под два динамических двумерных массива — соответственно матрицы А и В. Организуем ввод пользователем элементов этих двух матриц и вывод на экран заполненных матриц.

Код C++

int **aArr = new int *[m];

for (i = 0; i new int [n];

for (i = 0; i for (j = 0; j "Enter arrays elements of matrix A " ;

cout "Matrix A: " for (i = 0; i for (j = 0; j int **bArr = new int *[n];

for (i = 0; i new int [q];

for (i=0; i for (j = 0; j "Enter arrays elements of matrix B " ;

cout "Matrix B: " for (i = 0; i for (j = 0; j Код C++

int **cArr = new int *[i];

for (i = 0; i new int [j];

Затем — цикл вычисления произведения двух матриц по формуле . В цикле происходит суммирование всех произведений элементов, предусмотренной формулой.

Код C++

int **cArr = new int *[i];

for (i = 0; i new int [j];

for (i = 0; i for (j = 0; j for ( int k = 0; k Код C++

cout "Matrix C: " for (i = 0; i for (j = 0; j Код C++

using namespace std;

cout "Enter cols count in matrix A and rows count in matrix B: " ;

cout "Enter rows count in matrix A: " ;

cout "Enter cols count in matrix B: " ;

int **aArr = new int *[m];

for (i = 0; i new int [n];

for (i = 0; i for (j = 0; j "Enter arrays elements of matrix A " ;

cout "Matrix A: " for (i = 0; i for (j = 0; j int **bArr = new int *[n];

for (i = 0; i new int [q];

for (i=0; i for (j = 0; j "Enter arrays elements of matrix B " ;

cout "Matrix B: " for (i = 0; i for (j = 0; j int **cArr = new int *[i];

for (i = 0; i new int [j];

for (i = 0; i for (j = 0; j for ( int k = 0; k "Matrix C: " for (i = 0; i for (j = 0; j return 0;

Все по программированию на С++!

Разработать программу на С++ для работы с матрицами.
Программа должна выполнять следующие операции:
— умножение на матрицу;
— умножение на константу;
— сложение двух матриц.

Скриншот кода программы:

Код программы на языке программирования С++

Матрица представляет из себя двумерный массив. Для начала создадим класс матрицы

Пока этот класс явлеятся просто оберткой для двумерного массива.

Начинаем добавлять вспомогательные методы. Сначала добавим метод, позволяющий выполнить какое-либо действие над всеми элементами матрицы.

Функции высших порядков в C#

Функции высших порядков — это функции, которые как переменные передаются в аргументы других функций. В методе выше аргумент func имеет тип Action . Это значит, что аргументом должна быть функция, принимающая 2 аргумента типа int и возвращающая void. Добавим в конструктор такой вызов:

Этот вызов присвоит 0 во все элементы матрицы. Стрелочная функция (i, j) => this.data[i, j] = 0 — это и есть наша функция высшего порядка.

Использовать стрелочные функции не обязательно, можно было передавать и метод:

Индексаторы в C#

Индексаторы — это свойства, позволяющие обращаться к объекту как к массиву. Добавим такое свойство, позволяющее обращаться к элементам матрицы по индексу

Теперь к экземпляру класса Matrix можно обращаться как к двумерному массиву.

Умножение матриц на C#

Сначала реализуем умножение матрицы на число. В результате должна получиться матрица того же размера, элементами будут элементы исходной матрицы умноженные на это число.

Перегрузка операторов в C#

Для классов в C# можно определить операторы. Определим оператор умножения, позволяющиу умножить на число.

Теперь умножить матрицу на число можно с помощью оператора умножения

Матрицу можно так же умножить на другую матрицу. Результатом будет новая матрица, элементами которой будут скалярные произведения столбцов и строк исходных матриц. Формулу можно посмотреть на википедии

Перегрузка методов в C#

C# позволяет определить несколько методов с одинаковым названием. Воспользуемся этип и сделаем еще одну реализацию оператора умножения, позволяющую умножать матрицу на другую матрицу

Ссылка на основную публикацию
Фейковая карта visa с деньгами
Getting a valid Visa credit card number Visa credit card number (Bulk Generate Visa Cards) To check if your credit...
Удаленная игра на ps4
Использование приложения (Дистанционное воспроизведение PS4) для управления системой PlayStation®4 с компьютера. При установке этого приложения на ПК или Mac можно...
Удаленное подключение к virtualbox
Содержание статьи Если хоть раз попробуешь установить Linux под VirtualBox’ом, может сложиться впечатление, что это очень простой инструмент. Интерфейс виртуальной...
Фейсбук страница владимира панаева
с 16 по 26 Декабря Поволжское отделение Российской академии художеств Лаврушинский пер., д. 15Москва 15 декабря в 18.00 в Координационном...