ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Алгоритм умножения матриц на языке C


В данной статье мы рассмотрим алгоритм умножения матриц и приведем его код на языке программирования С.

Умножать можно такие прямоугольные матрицы, в которых число столбцов первой матрицы равно числу строк во второй (про такие матрицы говорят, что их форма согласована), то есть их размерность должна быть следующая: матрица A[m, n], матрица B[n, q].

Алгоритм умножения матриц

В результате умножения получится матрица C[m, q]:

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

элементы которой находятся по формуле:

Алгоритм умножения матриц - формула

На языке C алгоритм умножения матриц может быть записан следующим образом:


Рассмотрим пример программы, которая умножает две квадратные матрицы размерностью N, заполненные случайными числами.

Подключим необходимые библиотеки к программе:

Объявим константу число N — размерность матриц:

Переходим к функции main(). Вначале необходимо выделить память под матрицы A, B и C:

Заполним матрицы A и B случайными числами.

srand(time(NULL)) — инициализация генератора случайных текущим временем компьютера.

rand() % 10 — берём остаток от деления на 10, следовательно элементы матрицы будут заполняться числами от 0 до 9.

Выполняем умножение матриц:

Выводим результат вычислений на экран:

Не забываем прибираться за собой. Освобождаем память:

Результат работы программы представлен на рисунке ниже:

Программа, умножающая матрицы - реализация алгоритма

Если вы хотите скачать исходник этой программы, но нажмите на кнопку.

Скачать исходник

 

 

4.5/5 - (16 голосов)



Поделиться в соц. сетях:

3 комментария(ев) к статье “Алгоритм умножения матриц на языке C

    1. admin Автор статьи

      Справедливо. В языке Си нет операторов new и delete. Переписал программу, используя СИшные malloc и free.

Добавить комментарий

Ваш адрес email не будет опубликован.