求3X3矩阵C的次矩阵

求3X3矩阵C的次矩阵,c,matrix,C,Matrix,我的问题是如何输入3X3矩阵并显示所有9个小矩阵。我最大的问题是如何在删除特定行和列的同时遍历所有元素,然后将其余元素复制到2X2矩阵中 任务说明: 确定输入矩阵中每个元素(i,j)的次矩阵–M(i,j)。 3X3输入矩阵中有9个元素。因此,将有9个小矩阵 在此步骤中生成。每个次矩阵的维数为2X2。 元素(i,j)的次矩阵–从原始矩阵中删除第i行和第j列。这个 其余元素构成元素(i,j)的次矩阵。 请注意,实际上不需要删除原始输入矩阵的行和列。 仅跟踪哪些元素必须从中复制到2X2次要矩阵中 基于

我的问题是如何输入3X3矩阵并显示所有9个小矩阵。我最大的问题是如何在删除特定行和列的同时遍历所有元素,然后将其余元素复制到2X2矩阵中

任务说明:

确定输入矩阵中每个元素(i,j)的次矩阵–M(i,j)。 3X3输入矩阵中有9个元素。因此,将有9个小矩阵 在此步骤中生成。每个次矩阵的维数为2X2。 元素(i,j)的次矩阵–从原始矩阵中删除第i行和第j列。这个 其余元素构成元素(i,j)的次矩阵。 请注意,实际上不需要删除原始输入矩阵的行和列。 仅跟踪哪些元素必须从中复制到2X2次要矩阵中 基于元素索引(i,j)的原始输入矩阵。 声明一个2x2矩阵,将次要矩阵存储在主函数中。使用这个矩阵 对于本步骤中的9个次要矩阵中的每一个。 创建一个采用3X3原始输入矩阵、元素索引的函数定义 (i,j)和2X2次矩阵作为参数。该函数复制适当的元素 对于输入矩阵的给定元素索引(i,j),将3x3矩阵转换为2x2矩阵

代码:

#包括
int DET(int矩阵[3][3]);
int main(){
整数矩阵[3][3];
国际小调[2][2];
int i=0;
int j=0;
printf(“为3X3矩阵输入9个元素。\n”);
对于(i=0;i<3;++i){
对于(j=0;j<3;++j){
printf(“输入元素:”);
scanf(“%d”和矩阵[i][j]);
}
}
对于(i=0;i<3;++i){
对于(j=0;j<3;++j){
printf(“%d”,矩阵[i][j]);
}
printf(“\n”);
}
if(DET(矩阵)==0){
printf(“矩阵不可逆。\n”);
}
否则{
printf(“矩阵的行列式是%d\n”,DET(矩阵));
}
}
int DET(int矩阵[3][3]){
整数x,y,z,u,v,w,p,q,r,d;
x=矩阵[0][0];
y=矩阵[0][1];
z=矩阵[0][2];
u=矩阵[1][0];
v=矩阵[1][1];
w=矩阵[1][2];
p=矩阵[2][0];
q=矩阵[2][1];
r=矩阵[2][2];
d=x*(v*r-w*q)-y*(u*r-w*p)+z*(u*q-v*p);
返回d;
}

我认为有很多方法可以做到这一点。以下只是一个例子。(可能效率低下)。
我只是通过为次要矩阵保存临时行和列来复制它们

void createMinor(int-matrix[][3],int-minor[][2],int-row,int-col){
int小调行,小调列;
对于(int i=0;i<3;i++){
次要行=i;
如果(i>行)
小_行--;
对于(int j=0;j<3;j++){
小调col=j;
如果(j>col)
小调;
如果(i!=行和&j!=列)
次要[次要行][次要列]=矩阵[i][j];
}
}
}

为了显示一个小数字(i0,j0),您需要在矩阵上迭代,如果行是i0或列是j0,则跳过。顺便说一句,不错的DET功能。如何计算100x100矩阵行列式?
#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; 
}
void createMinor(int matrix[][3], int minor[][2], int row, int col) {
    int minor_row, minor_col;
    for (int i = 0; i < 3; i++) {
        minor_row = i;
        if (i>row)
            minor_row--;
        for (int j = 0; j < 3; j++) {
            minor_col = j;
            if (j>col)
                minor_col--;
            if (i != row && j != col)
                minor[minor_row][minor_col] = matrix[i][j];
        }
    }
}