I am writing a program to calculate the determinant of an n*n matrix. The issue is that the program ends abruptly without giving any error and does not return the result of the determinant. I am using Visual Studio c++ 2008 for the same. The code for the calculation of the matrix determinant is as follows:
insertCode:#include <stdio.h> #include <conio.h> #include <stdlib.h> int detmat(int *, int); main(){ int* arr, i,j; int result = 0, num, n=0, pos; printf("\n\rEnter the order of matrix"); scanf("%d", &n); arr = calloc(n*n, 2); printf("Enter the elements"); for(i =0;i<n;i++){ for(j =0;j<n;j++){ scanf("%d", &num); pos = i*n+j; arr[pos] = num; } } //print the matrix for(i=0;i<n;i++){ for(j=i;j<n*n; j+= n){ printf("\t%d", arr[j]); } printf("\n\r"); } result = detmat(arr, n); free(arr); printf("\n %d", result); printf("\n\n\nPress any key to exit"); getch(); } int detmat(int *arr, int order){ int *arr2, i,j,k, sign=1; int pos, newpos, count, sum =0; if(order == 1) return (arr[0]); for(i=0;i<order;i++, sign *= -1){ arr2 = calloc((order-1)*(order-1),2); for(j=1;j<order;j++){ for(k=0,count =0;k < order;k++){ if(k == i) continue; pos = j*order+k; newpos = (j-1)*(order-1) + count; arr2[newpos] = arr[pos]; count++; } } sum = sum + arr[i]*sign*detmat(arr2, order-1); free(arr2); } return (sum); }



LinkBack URL
About LinkBacks


