#include #define TAM 4 using namespace std; void PreencherMatrizQuadrada(float Matriz[][TAM], int Tamanho) { for(int i = 0; i < Tamanho; i++) { for(int j = 0; j < Tamanho; j++) { cin >> Matriz[i][j]; } } } void ImprimirMatrizQuadrada(float Matriz[][TAM], int Tamanho) { for(int i = 0; i < Tamanho; i++) { for(int j = 0; j < Tamanho; j++) { cout << Matriz[i][j] << "\t"; } cout << endl; } } float EscalonarMatrizQuadrada(float Matriz[][TAM], int Tamanho) { float Determinante = 1; float Auxiliar; //float VetorAuxiliar[Tamanho]; for(int i = 0; i < Tamanho; i++) { //for(int j = 0; j < Tamanho; j++) { if(Matriz[i][i] == 0) // Fiz now. { // Ou seja, se o pivõ for diferete de zer. for(int j = i; j < TAM; j++) { if(Matriz[i][j] != 0) { // Ou seja, se alguem elemento ebaixo do pivõ for diferente de zero. for(int k = 0; k < TAM; k++) { Auxiliar = Matriz[i][k]; Matriz[i][k] = Matriz[j][k]; Matriz[j][k] = Auxiliar; //Trocar(Matriz[i][k], Ma } } } } if(Matriz[i][i] != 0) { // Ou seja, se existe um pivô, diferente de zero. //if(Matriz[j][i] != 0) { // Se algum elemento abaixo do pivô em sua coluna for diferente de zero. if(Matriz[i][i] != 1) { // Se o pivô não for 1. Auxiliar = (1 / Matriz[i][i]); for(int k = 0; k < Tamanho; k++) { Matriz[i][k] *= Auxiliar; } Determinante /= Auxiliar; // Se multiplicar uma linha por um valor, a determinante é dividida pelo mesmo valor. ImprimirMatrizQuadrada(Matriz, Tamanho); } for(int l = i+1; l < Tamanho; l++) { // Para começar a verificar os número abaixo if(Matriz[l][i] != 0) { // Se não estiver zerada ainda vai zerar. // l é a linha que não está zerada. Auxiliar = Matriz[l][i]; for(int k = 0; k < Tamanho; k++) { Matriz[l][k] = Matriz[l][k] - (Matriz[i][k] * Auxiliar); } ImprimirMatrizQuadrada(Matriz, Tamanho); } } // To aqui. } } for(int i = 0; i < Tamanho; i++) { Determinante *= Matriz[i][i]; } return Determinante; } int main() { float MatrizA[TAM][TAM]; float Determinante; PreencherMatrizQuadrada(MatrizA, TAM); ImprimirMatrizQuadrada(MatrizA, TAM); Determinante = EscalonarMatrizQuadrada(MatrizA, TAM); cout << Determinante << endl; }