Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

C lol

Name: Anonymous 2007-08-27 4:47 ID:3rBvLctt

#include <stdio.h>

int powerOfOne (int power);
int **submatrix (int row, int order, int **matrix);
int determinantFn (int **matrix, int order);
void *malloc (size_t size);
int **deleteRow (int **matrix, int row, int width, int height);
int **deleteColumn (int **matrix, int column, int width, int height);
int **inputMatrix (int *orderptr);

int **
inputMatrix (int *orderptr)
{
  int i, j;

  printf ("Input the order of the matrix:\n");
  scanf ("%d", orderptr);

  int **matrix = malloc (*orderptr * sizeof (int *));
  for (i = 0; i < (*orderptr); i++)
    {
      matrix[i] = malloc (*orderptr * sizeof (int));
    }

  for (i = 0; i < *orderptr; i++)
    {
      for (j = 0; j < *orderptr; j++)
        {
          printf ("row %d, column %d:\n", i, j);
          scanf ("%d", &matrix[i][j]);
        }
    }

  return matrix;
}

int **
deleteRow (int **matrix, int row, int width, int height)
{
  int **newMatrix = malloc ((height - 1) * sizeof (int *));
  int i;
  for (i = 0; i < height - 1; i++)
    {
      newMatrix[i] = malloc (width * sizeof (int));
    }

  int j;
  for (j = 0; j < width; j++)
    {
      for (i = row; i < height - 1; i++)
        {
          matrix[i][j] = matrix[i + 1][j];
        }
    }

  for (i = 0; i < height - 1; i++)
    {
      for (j = 0; j < width; j++)
        {
          newMatrix[i][j] = matrix[i][j];
        }
    }
            
        }
    }
  return newMatrix;
}

int **
deleteColumn (int **matrix, int column, int width, int height)
{
  int **newMatrix = malloc (height * sizeof (int *));
  int i;
  for (i = 0; i < height; i++)
    {
      newMatrix[i] = malloc ((width - 1) * sizeof (int));
    }

  int j;
  for (i = 0; i < height; i++)
    {
      for (j = column; j < width - 1; j++)
        {
          matrix[i][j] = matrix[i][j + 1];
        }
    }

  for (i = 0; i < height; i++)
    {
      for (j = 0; j < width - 1; j++)
        {
          newMatrix[i][j] = matrix[i][j];
        }
    }
  return newMatrix;
}


int **
submatrix (int row, int order, int **matrix)
{
  int i;

  int **submatrix;
  submatrix = malloc (sizeof (int *) * (order - 1));
  for (i = 0; i < order - 1; i++)
    {
      submatrix[i] = malloc (sizeof (int) * (order - 1));
    }

  submatrix = deleteRow (deleteColumn (matrix, 0, 3, 3), row, 2, 3);


  return submatrix;

}

int
determinantFn (int **matrix, int order)
{
  int determinant = 0;
  int j;

  if (order > 2)
    {
      for (j = 0; j <= order; j++)
        {
          determinant = determinant + (matrix[1][j] * powerOfOne (1 + j) *
                                       determinantFn (submatrix
                                                      (j, order, matrix),
                                                      order - 1));
        }
    }
  else
    {
      determinant = matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];
    }

  return determinant;
}

int
powerOfOne (int power)
{
  int result = -1;
  int i;

  if (power > 1)
    {
      for (i = 2; i <= power; i++)
        {
          result = result * -1;
        }
    }

  return result;
}

int
main (int argc, char **argv)
{
  int **inMatrix;
  int result;
  int order;

  inMatrix = inputMatrix (&order);

  result = determinantFn (inMatrix, order);

  printf ("Determinant of Inputted Matrix is %d\n", result);


  return 0;
}

Name: Anonymous 2007-08-27 12:48 ID:AQ+t4ErM

>>7
strncpy(a,"I use too many pointers",sizeof(a));

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List