-2
我的問題是如何獲取3X3矩陣的輸入並顯示所有9個次矩陣。我最大的問題是如何遍歷所有元素,同時刪除特定的行和列,然後將其餘元素複製到2X2矩陣中。查找3X3矩陣的小矩陣C
賦值指令:
確定次要矩陣 - M(I,J),用於將輸入矩陣的每個元素(I,J)。 3X3輸入矩陣中有9個元素。因此,在這個步驟中會產生9個小矩陣 。每個次矩陣的維數是2X2。 元素(i,j)的次矩陣 - 從原始矩陣中刪除第i行和第j列。其餘元素構成元素(i,j)的次矩陣。 請注意,原始輸入矩陣的行和列不需要實際刪除。 僅根據元素索引(i,j)跟蹤哪些元素必須從 原始輸入矩陣複製到2X2次矩陣中。 聲明一個2x2矩陣以在main函數中存儲次矩陣。在此步驟中,對這9個次要矩陣中的每一個使用此矩陣 。 創建一個函數定義,它將採用3X3原始輸入矩陣,元素索引 (i,j)和2X2次要矩陣作爲參數。函數將3x3矩陣的適當元素 複製到輸入矩陣的給定元素索引(i,j)的2x2矩陣中。
代碼:
#include <stdio.h>
int DET(int matrix[3][3]);
int main() {
int matrix[3][3];
int minor[2][2];
int i = 0;
int j = 0;
printf("Enter 9 elements for a 3X3 matrix.\n");
for(i = 0; i < 3; ++i) {
for(j = 0; j < 3; ++j) {
printf("Enter element:");
scanf("%d", &matrix[i][j]);
}
}
for (i = 0; i < 3; ++i) {
for (j = 0; j < 3; ++j) {
printf(" %d ", matrix[i][j]);
}
printf("\n");
}
if(DET(matrix) == 0){
printf("Matrix is not invertible.\n");
}
else{
printf("The determinant of the matrix is %d\n", DET(matrix));
}
}
int DET(int matrix[3][3]) {
int x, y, z, u, v, w, p, q, r, d;
x = matrix[0][0];
y = matrix[0][1];
z = matrix[0][2];
u = matrix[1][0];
v = matrix[1][1];
w = matrix[1][2];
p = matrix[2][0];
q = matrix[2][1];
r = matrix[2][2];
d=x*(v*r-w*q)-y*(u*r-w*p)+z*(u*q-v*p);
return d;
}
爲了顯示一個輔號碼(I0,J0),則需要遍歷矩陣,跳過*如果*行I0 *或*列是J0。順便說一句好的DET功能。你將如何計算100×100矩陣行列式? –