#include <stdio.h> /* for input/output */
#include <math.h> /* for power */

#define Size 4

main() {
  int M[4][4] = {
    { 1,  2,  3,  4},
    { 5,  6,  7,  8},
    { 9, 10, 11, 12},
    {13, 14, 15, 16}
  };
  int Mtemp[Size][Size];
  int temp;

  int row, col;

  printf("Lab Session 7, Question III\n"); /* Display program header */

  /* Print Matrix */
  printf("BEFORE:\n"); 
  for (row=0; row<Size; row++) {
    for (col=0; col<Size; col++) {
      printf("%d\t", M[row][col]);
    }
    printf("\n");
  }
  printf("\n"); 

  /* Inverse Matrix */
  for (col=0; col<Size; col++) {
    Mtemp[col][col] = M[col][col];
    for (row=col+1; row<Size; row++) {
      temp = M[col][row];
      Mtemp[col][row] = M[row][col];
      Mtemp[row][col] = temp;
    }
  }

  /* Copy Matrix */
  for (row=0; row<Size; row++) {
    for (col=0; col<Size; col++) {
      M[row][col] = Mtemp[row][col];
    }
  }

  /* Print Matrix */
  printf("AFTER:\n"); 
  for (row=0; row<Size; row++) {
    for (col=0; col<Size; col++) {
      printf("%d\t", M[row][col]);
    }
    printf("\n");
  }
  printf("\n"); 

}

