Tuesday, August 31, 2010

C Program to find determinant of a given matrix

#include<stdio.h>
#include<conio.h>
#define LIMIT 10
void main()
{
  int chdg(float [10][10],int);
  float deter(float [10][10],int);
  float a[10][10],value;
  int i,j,order;
  clrscr();
  printf("Enter order of determent :");
  scanf("%d",&order);
  for(i=0;i<order;i++)
  {
    for(j=0;j<order;j++)
    {
      printf("Enter (%d,%d) element of the determent :",i+1,j+1);
      scanf("%f",&a[i][j]);
    }
  }

  if(chdg(a,order)==0)
     value=0;
  else
     value=deter(a,order);
  printf("Determinent Value :%f",value);
  getch();
}

float deter(float a[10][10],int forder)
{
  int i,j,k;
  float mult;
  float deter=1;
  for(i=0;i<forder;i++)
  {
    for(j=0;j<forder;j++)
    {
      mult=a[j][i]/a[i][i];
      for(k=0;k<forder;k++)
      {
        if(i==j) break;
        a[j][k]=a[j][k]-a[i][k]*mult;
      }
    }
  }
  for(i=0;i<forder;i++)
  {
    deter=deter*a[i][i];
  }
  return(deter);
}


int chdg(float array[10][10],int ord)
{
  int i,j,k;
  for(i=0;i<ord;i++)
  {
     if(array[i][i]==0)
     {
        for(j=0;j<ord;j++)
        {
          if(array[i][j]!=0)
          {
             k=j;
             break;
          }
          if(j==(ord)) //forder-1
             return(0);
        }
        for(j=0;j<ord;j++)
        {
          array[j][i]=array[j][i]-array[j][k];
        }
     }
  }
  return(1);
}

No comments:

Post a Comment