Вопрос в том, чтобы найти определитель матрицы NXN на языке Си.Я написал следующий код.Я получаю вывод для матрицы = 2.Но при n> 2 программа говорит «ошибка сегментации (ядро сброшено)».Пожалуйста, помогите мне с этим.Я попытался написать код как можно более правильным.Любое выделение ошибок в синтаксисе будет очень ценно.Заранее спасибо.(Я использую терминал Ubuntu 18.04 LTS.)
Input - 2 (Order of Matrix)
1 (Enter the Elements)
2
3
4
Output -1 2 (Entered Matrix)
3 4
-2 (Value of Determinant)
Input - 3 (Order of Matrix)
1 (Enter the Elements)
2
3
4
5
6
7
8
9
Output -1 2 3 (Entered Matrix)
4 5 6
7 8 9
Segementation Fault(Core Dumped)
#include <stdio.h>
int determinent(int n,int p[n][n]);
int main()
{
int n,i,j;
printf("Enter the order of the matrix:\n");
scanf("%d",&n);
int a[n][n];
printf("Enter the elements of the NXN matrix.\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("The entered matrix is:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
printf("The determinent of the matrix is %d\n",determinent(n,a));
return 0;
}
int determinent(int n,int p[n][n])
{
int det,k,m,s=1,i,j,l=0;
if(n==2)
{
det = p[0][0]*p[1][1] - p[0][1]*p[1][0];
}
else
{
for(k=0;k<n;k++,s=-s,l++)
{
if(l==0)
{
det = 0;
}
int b[n-1][n-1];
m = (p[0][k])*(s);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1;j++)
{
if(k==0)
{
b[i][j] = p[i+1][j+1];
}
else
{
int c;
for(c=0;c<k;c++)
{
b[i][j] = p[i+1][j+1];
}
for(c=k+1;c<n;c++)
{
b[i][j] = p[i+1][c];
}
}
}
}
n = n-1;
det = det + m*determinent(n,b);
}
}
return det;
}