gpt4 book ai didi

c - 矩阵乘法程序

转载 作者:太空宇宙 更新时间:2023-11-04 06:41:28 24 4
gpt4 key购买 nike

试图制作 3 x 3 矩阵乘法器,但它给出了错误的输出。我不知道我做错了什么。我面临的两个问题是:

(1) 一些变量存储了错误的输入。例如 a[1][1] 显示 7 尽管我输入了 1

(2)矩阵乘法错误

#include <stdio.h>
#include <conio.h>

void matrix_format(int m[2][2])
{
int i,j;
printf("\n\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
if(j==0)
printf("[ %d |",m[i][j]);
else if(j==1)
printf(" %d |",m[i][j]);
else if(j==2)
printf(" %d ] \n",m[i][j]);
}
}
}


int main(void)
{
void matrix_format(int [2][2]);
int a[2][2], b[2][2], r[2][2],m,i,j;

clrscr();

for(m=1;m<=2;m++)
{

if(m==1)
{
printf("Enter values for the matrix A \n");
}
else
{
printf("\n\nEnter values for the matrix B \n");
}

for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
if(m==1)
{
printf("A[%d][%d] : ",i+1,j+1);
scanf("%d",&a[i][j]);
}
else if(m==2)
{
printf("B[%d][%d] : ",i+1,j+1);
scanf("%d",&b[i][j]);
}
}
}
}

printf("\n Matrix A : \n");
matrix_format(a);

printf("\n Matrix B : \n");
matrix_format(b);

for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
r[i][j]= a[i][j] * b[j][i];
}
}

printf("\n Matrix Multiplication Result : \n");
matrix_format(r);

getch();
return 0;
}

输出:

enter image description here enter image description here

请指导我。

最佳答案

跳出的第一个问题是你所有的数组都是 2x2,而它们应该是 3x3:

m[2][2]

应该阅读

m[3][3]

等等。括号中的数字是数组的大小,而不是最后一个元素的索引。

这将解释一些奇怪的现象,特别是为什么某些元素会被神秘地覆盖。

至于实际的矩阵乘法,您的算法不太正确(假设您要实现的是标准线性代数矩阵乘积)。想一想两个矩阵相乘涉及哪些步骤,以及您的代码实际上在做什么。由于这是作业,我只会给你一个提示:

Matrix product involves summations of element products.

关于c - 矩阵乘法程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com