Mam napisać program liczący macierz odwrotną do zadanej. Udało mi się to zrobić gdy macierz jest już podana, lecz mam problem żeby to zrobić tak by macierz była wczytywana z klawiatury i dopiero przetwarzana na macierz odwrotną. Proszę również o komentarz do programu poniżej czy wygląda on w miarę dobrze, czy może da się coś uprościć?
#include <stdio.h>
#include <stdlib.h>
int tab[3][3]={0, 2, 3, 4, 5, 6, 7, 8, 9};
int tab2[3][3];
int wyznacznik;
int i, j;
int main()
{
wyznacznik=tab[0][0]*tab[1][1]*tab[2][2]+tab[1][0]*tab[2][1]*tab[0][2]+tab[0][1]*tab[1][2]*tab[2][0]
-(tab[2][0]*tab[1][1]*tab[0][2]+tab[1][0]*tab[0][1]*tab[2][2]+tab[2][1]*tab[1][2]*tab[0][0]);
tab2[0][0]=(tab[1][1]*tab[2][2]-(tab[1][2]*tab[2][1]));
tab2[0][1]=-(tab[1][0]*tab[2][2]-(tab[1][2]*tab[2][0]));
tab2[0][2]=(tab[1][0]*tab[2][1]-(tab[1][1]*tab[2][0]));
tab2[1][0]=-(tab[0][1]*tab[2][2]-(tab[0][2]*tab[2][1]));
tab2[1][1]=(tab[0][0]*tab[2][2]-(tab[0][2]*tab[2][0]));
tab2[1][2]=-(tab[0][0]*tab[2][1]-(tab[0][1]*tab[2][0]));
tab2[2][0]=(tab[0][1]*tab[1][2]-(tab[0][2]*tab[1][1]));
tab2[2][1]=-(tab[0][0]*tab[1][2]-(tab[0][2]*tab[1][0]));
tab2[2][2]=(tab[0][0]*tab[1][1]-(tab[0][1]*tab[1][0]));
for(i=0; i<3; i++){
for(j=0; j<3; j++){
printf("%d ",tab2[j][i]/wyznacznik);
}
printf("\n");
}
return 0;
}