首页 > 解决方案 > 使用递归找到用户定义矩阵的行列式

问题描述

所以我希望制作一个 C 程序来找到“用户定义”矩阵的行列式。矩阵可以是任何顺序(比如 2*2 或 3*3 或 4*4.....n*n)我尝试制作一个简单的程序来找到任何 2*2 或 3*3 矩阵的行列式有两件事我需要帮助

纠正程序中的逻辑错误,因为 2*2 矩阵的行列式错误。并将递归添加到程序中,以便我们可以找到无限矩阵的行列式。

#include<stdio.h>
int main()
{
        int a,b;
        printf("enter the rows and columns of matrix\n");
        scanf("%d%d",&a,&b);
        int c[a][b];
        printf("Enter Elements In The Matrix:\n");
        for(int i=0;i<b;i++)
        {
                for(int j=0;j<a;j++)
                {
                        scanf("%d",&c[i][j]);
                }
        }
        printf("\nYour Matrix Is:\n");
        for(int p=0;p<b;p++)
        {
                for(int k=0;k<a;k++)
                {
                        printf("%d\t",c[p][k]);
                }
                printf("\n\n");
        }
        if(a==b)
        {
                printf("\nDeterminent Of Marix Is: ");
                int D1=0,D2=0,D3=0,D;
                for(int n=0;n<a;n++)
                {
                        for(int m=0;m<b;m++)
                        {
                                if(n==0 && m==0)
                                {
                                        D1=c[n][m]*(c[n+1][m+1]*c[n+2][m+2] - c[n+2][m+1]*c[n+1][m+2]);
                                }
                                if(n==0 && m==1)
                                {
                                        D2=c[n][m]*(c[n+1][m-1]*c[n+2][m+1] - c[n+2][m-1]*c[n+1][m+1]);
                                }
                                if(n==0 && m==2)
                                {
                                        D3=c[n][m]*(c[n+1][m-2]*c[n+2][m-1] - c[n+2][m-2]*c[n+1][m-1]);
                                }
                        } 
                }
        D=D1-D2+D3;
        printf("%d\n",D);
        }
 else
        {
                printf("The Matrix Is Not A Square Matric So The 
Determinent Cannot Be Calculated\n");
        }
        return 0;
}

标签: c

解决方案


推荐阅读