Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #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;
- }
Advertisement
Add Comment
Please, Sign In to add comment