Матричное исчисление в C++ - Умножение двух матриц

Произведение двух матриц в C++


#include< stdio.h> 
#include< stdlib.h>
#include < iostream>
использование пространства имен std;
typedef struct matrix
{
int line;
столбец int;
int** данные;
}матрица;
структурная матрица creer_matrice(int строка, int столбец){
структурная матрица m;
m.row = строка;
м.столбец = столбец;
m.data = (int**)malloc(m.line*sizeof(int *));
for(int i = 0; i< m.row; ++i){
// инициализируем блоки значением 0 с помощью calloc
m.data[i] = (int *)calloc(m.column,sizeof(int));
}
return m;
}

void afficher_matrice(matrix M){
for(int i = 0; i < М.лайн; i++) {
for(int j = 0; j < М.Колонна; j++) {
стоимость < < M.data[i][j] ; < руб./> стоимость < < "\t";
}
//перенос строки
стоимость < < "\n";
}
стоимость < < "\n";
}

struct product matrix(матрица A, матрица B)
{
матрица C = creer_matrice(A.row, B.column);
for(int I = 0; Я < А.линия; I++)
for(int J = 0; J < Б.колонна; J++)
{
C.data[I][J] = 0;
for(int K = 0; К < А.колонна; K++)
{
C.data[I][J] += A.data[I][K] * B.data[K][J];
}
}
return C;
}

int main(int argc, char *argv[])
{
/*
матрица A
*/
матрица A = creer_matrice(4,3);
srand(time(NULL));
for(int i=0; i< А.линия; i++)
for(int j=0; j< А.колонна; j++)
//Генерируем случайные числа от 0 до 20 и вычитаем 10
//получаем отрицательные числа
//например: если rand генерирует 74, то 74-100 = -36
A.data[i][j] =rand()%20-10;
afficher_matrice(А);

/*
2-я матрица
*/
матрица B = creer_matrice(3.5);
srand(time(NULL));
for(int i=0; i< Б.линия; i++)
for(int j=0; j< Б.колонна; j++)
//Генерируем случайные числа от 0 до 20 и вычитаем 10
//получаем отрицательные числа
//например: если rand генерирует 74, то 74-100 = -36
B.data[i][j] =rand()%20-10;
afficher_matrice(B);

//product
//матрица C = product(A,B);
//afficher_matrice(C);
afficher_matrice(мощность(A));
system("пауза");
}