Da quel che vedo nel tuo codice non hai nemmeno provato a trovare la trasposta.
Per cui suppongo che il tuo problema sia l' algoritmo.

Una delle soluzioni più semplici sta nel trovare la matrice aggiunta e poi dividerla per il determinante, se diverso da zero.
Per quanto riguarda il determinante lo calcoli con Sarrus, tenendo presente che se la matrice è più larga di una 3x3, poiché è valida la formula:

codice:
det(A)= sum ( (-1)^(i+j) aij * det(Aij)) j from 1 to n
Dove Aij è il minore associato, e aij è il valore di indici ij della matrice.
Per cui se hai una 4x4 puoi calcolare il determinante delle 3 sub-matrici 3x3 scegliendo una riga a tuo piacimento (fai una funzione per Sarrus e poi la riutilizzi quante volte vuoi).


Per quanto riguarda la traccia ti puoi risparmiare dei conti, abbassando l' efficienza da N^2 a N, perché basta un solo ciclo per sommare gli elementi sulla diagonale principale:

codice:
for(x=0; x<cnt; x++)
{
    tot=tot+mat [x][x];
    // non stamparlo 1000 volte, stampalo fuori dal for
}
Lo stesso vale per la diagonale secondaria (lascio a te il piacere ).
Per quanto riguarda Sarrus non sono stato a verificare se è giusto ma ti consiglio di fare una funzione invece di scrivere la il codice, così è riutilizzabile (per il punto a dove ti serve la matrice inversa).