请求修改矩阵乘法,能用

来源:互联网 发布:tensorflow教程pdf 编辑:程序博客网 时间:2024/05/29 16:04

#include "stdafx.h"

#include <stdio.h>

int main()

{

int row, col;

int row_1, col_1;

int row_2, col_2;

int i, j, k, x,temp;

//创建矩阵1

printf("Please enter the rows and columns of an arr1:\n");

scanf_s("%d%d", &row_1, &col_1);

int **arr1 = new int*[row_1];   //动态创建一个指针数组,并将其首地址存在arr1中

for (i = 0; i < row_1; i++)    //为指针数组的每一个元素分配一个数组

{

arr1[i] = new int[col_1];

}

printf("Please enter an array of %d rows and %d columns:\n", row_1, col_1);

for (j = 0; j <row_1; j++)

{

for (k = 0; k < col_1; k++)

{

scanf_s("%d", &x);

arr1[j][k] = x;

}

}

//创建矩阵2

printf("Please enter the rows and columns of an arr2:\n");

scanf_s("%d%d", &row_2, &col_2);

int **arr2 = new int*[row_2];

for (i = 0; i < row_2; i++)   

{

arr2[i] = new int[col_2];

}

printf("Please enter an array of %d rows and %d columns:\n", row_2, col_2);

for (j = 0; j <row_2; j++)

{

for (k = 0; k < col_2; k++)

{

scanf_s("%d", &x);

arr2[j][k] = x;

}

}

//矩阵相乘

if (col_1 == row_2)

{   

row = row_1;

col = col_2;

int **arr3 = new int*[row];

for (i = 0; i < row; i++)

{

arr3[i] = new int[col];

}

    for (i = 0; i < row; i++) {

    for (j = 0; j < col; j++)

{

    temp = 0;

    for (k = 0; k <col_1; k++)

{

    temp += arr1[i][k] * arr2[k][j];

    }

    arr3[i][j] = temp;

    }

    }

printf("Output a matrix of %d rows and %d columns:\n", row_2, col_2);

for (i = 0; i < row; i++)

{

for (j = 0; j < col; j++)

printf(" %d", arr3[i][j]);

printf("\n");

}

//释放arr3内存

for (i = 0; i < row; i++)

{

delete arr3[i];

arr3[i] = NULL;

}

delete[row_2]arr3;

arr3 = NULL;

}

//释放arr1内存

for (i = 0; i < row_1; i++)

{

delete arr1[i];

arr1[i] = NULL;

}

delete[row_1]arr1;

arr1 = NULL;

//释放arr2内存

for (i = 0; i < row_2; i++)

{

delete arr2[i];

arr2[i] = NULL;

}

delete[row_2]arr2;

arr2 = NULL;

return 0;

}

原创粉丝点击