How to inverse N x M matrix in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
  
#define ROW 3
#define COL 4
  
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; 
        }
    }
}
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");
    }
}
  
int main(void)
{
    int i, j, matrix[ROW][COL] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
     
    printf("matrix 1:\n");
    print_matrix(matrix);
    inverse_matrix(matrix);
    printf("inverse matrix 1:\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 2:\n");
    print_matrix(matrix);
    inverse_matrix(matrix);
    printf("inverse matrix 2:\n");
    print_matrix(matrix);
      
    return 0;
}
  



 
/* 
run:
 
matrix 1:
    1    2    3    4
    5    6    7    8
    9   10   11   12
inverse matrix 1:
   12   11   10    9
    8    7    6    5
    4    3    2    1


matrix 2:
    6    3   10    2
    6    3    9    2
    7    8    9    1
inverse matrix 2:
    1    9    8    7
    2    9    3    6
    2   10    3    6
 
*/


answered Sep 26, 2014 by avibootz
edited May 16, 2024 by avibootz
...