Matriz Inversa em C

Boa Tarde!
Estou com uma dificuldade em um código…
Preciso fazer um código que leia uma Matriz 8x8, e apresente em tela a Diagonal Principal e a Matriz Inversa, se houver.
Já fiz o código, porém não consigo apresentar a Inversa em Tela. Sempre aparece em branco.
Alguém poderia verificar o código e se possível me ajudar?
Abaixo segue o código que fiz.

#include <stdio.h>

/**Programa que lê uma matriz 8x8, e apresenta em tela a diagonal principal,
e a matriz Inversa, se houver!
**/

main()
{
       int Matriz_A[3][3];
       int linha,coluna, tab;
       int pivo =0, p = 0, m = 0, k = 0;
       
       for (linha=0; linha<3;linha++){
            for (coluna=0; coluna<3;coluna++){
                
                printf("Digite o elemento linha %d coluna %d: ", linha+1, coluna+1);
                scanf("%d", &Matriz_A[linha][coluna]);
              }
      }
      
      
      printf("----------------------\n");
      printf("Matriz Digitada:\n");
      printf("----------------------\n");
                  
        for (linha=0; linha<3;linha++){
            for (coluna=0; coluna<3;coluna++){
                  printf("%d ", Matriz_A[linha][coluna]);
              }
              printf("\n");
      }
      
     
    printf("\n\n");  
    printf("-----------------------------\n");
    printf("DIAGONAL PRINCIPAL\n");
    printf("-----------------------------\n");

    for(linha=0; linha < 3; linha++){                 
     for(coluna=0; coluna < 3; coluna++){
         if (linha == coluna){
               printf("%d ", Matriz_A[linha][coluna]);
               } else{
                      printf(" ");                 
                 } 
    }
    printf("\n");
    }
    
    printf("\n\n");  
    printf("-----------------------------\n");
    printf("MATRIZ IDENTIDADE\n");
    printf("-----------------------------\n");
    
    int identidade[linha][coluna];
    
    for(linha = 0; linha < 3; linha++){
        for(coluna = 0; coluna < 3; coluna++){
             if(linha == coluna){
                  identidade[linha][coluna] = 1;
                  }else{
                        identidade[linha][coluna] = 0;     
                  } 
        }  
    }
    
    for(linha = 0; linha < 3; linha++){
          for(coluna = 0; coluna < 3; coluna++){
              printf("%d", identidade[linha][coluna]);
              if(coluna < 3 - 1){
                   printf("\t");
              }else{
                  printf("\n");  
              }  
          }
    } 
    
    printf("\n\n");  
    printf("-----------------------------\n");
    printf("MATRIZ INVERSA\n");
    printf("-----------------------------\n");
    
    for(coluna = 0; coluna < 3; linha++){
        pivo = Matriz_A[coluna][coluna];
        //p = pivo/pivo;
        for(k = coluna; k < 3; k++){
              Matriz_A[coluna][k] = (Matriz_A[coluna][k])/(pivo); //L1 -> L1/pivo , L2 -> L2/pivo, L3 -> L3/pivo
              identidade[coluna][k] = (identidade[coluna][k])/(pivo); //Ex: 1 0 0 / pivo  , 0 1 0 / pivo,   0 0 1/ pivo
        }
        
        for(linha = 0; linha < 3; linha++){
          if(linha != coluna){
               m = Matriz_A[linha][coluna];
               
               for(k = 0; k < 3; k++){
                  Matriz_A[linha][k] = (Matriz_A[linha][k]) - (m * Matriz_A[coluna][k]); //Ex: L2 -> L2 - ( 1"m" - L1) 
                  identidade[linha][k] = (identidade[linha][k]) - (m * identidade[coluna][k]);  
               }
          }
        }  
    }
    
    for(linha = 0; linha < 3; linha++){
          for(coluna = 0; coluna < 3; coluna++){
              printf("%d \t", identidade[linha][coluna]);
                 
          } 
          
          printf("\n"); 
    }

    
    getch();
}

Não é bem a resposta, mas você deveria estar atenta que na inversa
possivelmente serão gerados valores reais. Então você deveria mudar
para float. Aliás, como se calcula a inversa da matriz usando fatoração LU? Não me lembro mais…

o/

Havia pequenos erros neste trecho do código. Agora funciona perfeitamente. Parabéns.

for(linha = 0; linha < 3; linha++){
for(coluna = 0; coluna < 3; coluna++){
if(linha == coluna){
identidade[linha][coluna] = 1;
}else{
identidade[linha][coluna] = 0;
}
}
}

for(coluna = 0; coluna < 3; coluna++){
    pivo = Matriz_A[coluna][coluna];
    	for(k = 0; k < 3; k++){
		Matriz_A[coluna][k] = (Matriz_A[coluna][k])/(pivo); //L1 -> L1/pivo , L2 -> L2/pivo, L3 -> L3/pivo
		identidade[coluna][k] = (identidade[coluna][k])/(pivo); //Ex: 1 0 0 / pivo  , 0 1 0 / pivo,   0 0 1/ pivo
        }
    
	for(linha = 0; linha < 3; linha++){
		if(linha != coluna){
			m = Matriz_A[linha][coluna];
           			for(k = 0; k < 3; k++){
			Matriz_A[linha][k] = (Matriz_A[linha][k]) - (m*Matriz_A[coluna][k]); //Ex: L2 -> L2 - ( 1"m" - L1) 
			identidade[linha][k] = (identidade[linha][k]) - (m*identidade[coluna][k]);  
    			}
    		}
    	}  
}

CÓDIGO COMPLETO

#include
using namespace std;
#define N 3

float identidade[N][N];

void inversa(int n, float Matriz_A[N][N]){

int linha, coluna, k = 0;
    float pivo = 0, m = 0;
	
for(linha = 0; linha < 3; linha++){
    	for(coluna = 0; coluna < 3; coluna++){
    		if(linha == coluna){
    		identidade[linha][coluna] = 1;
    	        }else{
    	        identidade[linha][coluna] = 0;     
    	        } 
    	}  
	}

for(coluna = 0; coluna < 3; coluna++){
    pivo = Matriz_A[coluna][coluna];
    	for(k = 0; k < 3; k++){
		Matriz_A[coluna][k] = (Matriz_A[coluna][k])/(pivo); //L1 -> L1/pivo , L2 -> L2/pivo, L3 -> L3/pivo
		identidade[coluna][k] = (identidade[coluna][k])/(pivo); //Ex: 1 0 0 / pivo  , 0 1 0 / pivo,   0 0 1/ pivo
        }
    
	for(linha = 0; linha < 3; linha++){
		if(linha != coluna){
			m = Matriz_A[linha][coluna];
           			for(k = 0; k < 3; k++){
			Matriz_A[linha][k] = (Matriz_A[linha][k]) - (m*Matriz_A[coluna][k]); //Ex: L2 -> L2 - ( 1"m" - L1) 
			identidade[linha][k] = (identidade[linha][k]) - (m*identidade[coluna][k]);  
    			}
    		}
    	}  
}

for(linha = 0; linha < 3; linha++){
	for(coluna = 0; coluna < 3; coluna++){
	cout << identidade[linha][coluna] << "   ";    
        }
      
    cout << endl;
}

}

int main(){

    float Mat[N][N] = {{1,2,3},{0,1,4},{0,0,1}};
inversa(N,Mat);
return 0;    

}