C++ c+中的3x3数组乘法+;
我不确定我出了什么问题,我的代码似乎无法处理单整数以外的任何东西。我试图得到3x3数组,找到它的行列式,求出它的反函数,然后进行乘法得到IC++ c+中的3x3数组乘法+;,c++,c,arrays,C++,C,Arrays,我不确定我出了什么问题,我的代码似乎无法处理单整数以外的任何东西。我试图得到3x3数组,找到它的行列式,求出它的反函数,然后进行乘法得到I //matrix product for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { for (k = 0; k < 3; k++) { product[i][j] += array[i][k] * invertA[k][j];
//matrix product
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
for (k = 0; k < 3; k++) {
product[i][j] += array[i][k] * invertA[k][j];
}
}
}
听起来您可能需要学习如何使用调试器逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:
product[3][3]
-->product[3][3]={{0}}
//全局范围
--嗯,对不起?你必须像BLUEPIXY说的那样初始化产品
。我假设这是一个学习经验,但如果你真的想认真对待矩阵,我建议你使用特征库除以行列式,但没有说明如何计算。整数值和算术是否足够?
int main() {
int array[3][3], invertA[3][3], product[3][3], i, j, k; // The global scope
// ask for input
printf("Please enter 9 elements of the matrix seperated by a space: \n");
for (i = 0; i < 3; i++) { //the loop - create a table of 3 x 3
for (j = 0; j < 3; j++) {
scanf("%d", &array[i][j]); //save user-input as integer (%d) into the matrix a[i][j]
}
}
//a11 a12 a13
invertA[0][0] = (array[1][1] * array[2][2] - array[2][1] * array[1][2]) / determinant;
invertA[0][1] = -(array[1][0] * array[2][2] - array[1][2] * array[2][0]) / determinant;
invertA[0][2] = (array[1][0] * array[2][1] - array[2][0] * array[1][1]) / determinant;
//a21 a22 a23
invertA[1][0] = -(array[0][1] * array[2][2] - array[0][2] * array[2][1]) / determinant;
invertA[1][1] = (array[0][0] * array[2][2] - array[0][2] * array[2][0]) / determinant;
invertA[1][2] = -(array[0][0] * array[2][1] - array[2][0] * array[0][1]) / determinant;
//a31 a32 a33
invertA[2][0] = (array[0][1] * array[1][2] - array[0][2] * array[1][1]) / determinant;
invertA[2][1] = -(array[0][0] * array[1][2] - array[1][0] * array[0][2]) / determinant;
invertA[2][2] = (array[0][0] * array[1][1] - array[1][0] * array[0][1]) / determinant;