#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 3
#define COL 3
void inverse_matrix(int m[][COL]);
void print_matrix(int m[][COL]);
int main(void)
{
int i, j, matrix[ROW][COL] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
printf("matrix:\n");
print_matrix(matrix);
inverse_matrix(matrix);
printf("inverse matrix:\n");
print_matrix(matrix);
srand(time(NULL));
for (i = 0; i < ROW; i++)
for (j = 0; j < COL; j++)
matrix[i][j] = rand() % 10 + 1;
printf("\n\nmatrix:\n");
print_matrix(matrix);
inverse_matrix(matrix);
printf("inverse matrix:\n");
print_matrix(matrix);
return 0;
}
void inverse_matrix(int m[][COL])
{
int i, j, r, c, tmp, counter = 0;
for (r = ROW - 1, i = 0; i < ROW; i++, r--)
{
for (c = COL - 1, j = 0; j < COL; j++, c--)
{
tmp = m[i][j];
m[i][j] = m[r][c];
m[r][c] = tmp;
counter++;
if (counter > (ROW * COL) / 2 - 1) return; // stop from the middle of the matrix
}
}
}
void print_matrix(int m[][COL])
{
int i, j;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
printf("%5i", m[i][j]);
printf("\n");
}
}
/*
run:
matrix:
1 2 3
4 5 6
7 8 9
inverse matrix:
9 8 7
6 5 4
3 2 1
matrix:
7 3 1
5 9 3
1 3 8
inverse matrix:
8 3 1
3 9 5
1 3 7
*/