Você está aqui: C++ ::: C++ para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular o determinante de uma matriz usando o Teorema de Laplace em C++

Quantidade de visualizações: 552 vezes
Como já vimos em dicas anteriores, o determinante de uma matriz de ordem 3 (três linhas e três colunas) pode ser obtido por meio da Regra de Sarrus. No entanto, quando temos matrizes de ordem 4 ou superior, a regra mais comumente aplicada é o Método dos Cofatores, ou Regra de Laplace.

O Método dos Cofatores, ou Expansão de Cofatores, ou ainda Determinante por Laplace, foi um método para o cálculo de determinantes inventado por Pierre Laplace.

Nesta dica mostrarei um código C++ completo para calcular o determinante de uma matriz de ordem 3 usando expansão de cofatores. Note que a função calcularDeterminante() é uma função recursiva cujo caso base é a redução da matriz original em apenas uma linha e uma coluna.

Veja o código completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <string>
#include <iostream>
#include <iomanip>

// vamos definir a ordem da matriz
#define ORDEM 3 // 3 linhas e 3 colunas

using namespace std;

// protótipo das funções
int calcular_determinante(int matriz[ORDEM][ORDEM], int ordem);
void calcular_cofator(int mat[ORDEM][ORDEM], int temp[ORDEM][ORDEM],
  int p, int q, int ordem);

int main(int argc, char *argv[]){
  // variáveis auxiliares
  int i, j, determinante;
 
  // e agora criamos a matriz. Podemos definir os elementos
  // diretamente ou pedir para o usuário informar os valores
  int matriz[ORDEM][ORDEM] = {{1, 3, 0}, {0, 2, 5}, {2, 4, 4}}; 
 
  // mostramos a matriz completa
  cout << "A matriz e:\n\n";
    
  for (i = 0; i < ORDEM; i++) {
    for (j = 0; j < ORDEM; j++){
      cout << setw(5) << matriz[i][j];
    }
    cout << "\n";
  }
    
  // vamos calcular o determinante usando o Teorema de Laplace
  determinante = calcular_determinante(matriz, ORDEM);
    
  // e mostramos o resultado
  cout << "\nO determinante da matriz e: " << determinante << endl;
  cout << "\n" << endl;
  
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS; 
}

// função recursiva que encontra e retorna o determinante de uma
// matriz de qualquer ordem
int calcular_determinante(int matriz[ORDEM][ORDEM], int ordem){
  int determinante = 0; // para guardar e retornar o determinante
  // matriz de cofatores
  int cofatores[ORDEM][ORDEM];
  // para guardar o sinal de multiplicação
  int sinal = 1;
    
  // variáveis auxiliares nesta função
  int f;  
    
  // caso base da recursividade:
  // se a matriz possuir apenas um elemento, retorna ele
  if (ordem == 1){
    return matriz[0][0];
  }
 
  // vamos percorrer cada um dos elementos da primeira linha    
  for (f = 0; f < ordem; f++) {
    // vamos obter o cofator de matriz[0][f]
    calcular_cofator(matriz, cofatores, 0, f, ordem);
    determinante = determinante + (sinal * matriz[0][f]
      * calcular_determinante(cofatores, ordem - 1));
 
    // alterna o sinal
    sinal = -sinal;
  }
 
  // retorna o determinante
  return determinante;
} 
  
// função para retornar o cofator de mat[p][q] em temp[][]
// ordem é a ordem atual da matriz mat[][]
void calcular_cofator(int mat[ORDEM][ORDEM], int temp[ORDEM][ORDEM],
  int p, int q, int ordem){
  // nos parâmetros, p indica linha e q indica coluna
    
  // variáveis auxiliares
  int i = 0, j = 0;
 
  // percorre cada um dos elementos da matriz recebida
  for (int linha = 0; linha < ordem; linha++) {
    // percorre as colunas
    for (int coluna = 0; coluna < ordem; coluna++) {
      // copia para a matriz temporária apenas os
      // elementos que não se encaixam na linha
      // e coluna informadas
      if (linha != p && coluna != q) {
        temp[i][j++] = mat[linha][coluna];
        // preenchemos a linha. Hora de aumentar
        // o índice da linha e resetar o índice
        // da coluna
        if (j == ordem - 1) {
          j = 0;
          i++;
        }
      }
    }
  }
}

Ao executar este código C++ nós teremos o seguinte resultado:

A matriz é:

    1    3    0
    0    2    5
    2    4    4

O determinante da matriz é: 18


Link para compartilhar na Internet ou com seus amigos:

C++ ::: Dicas & Truques ::: Strings e Caracteres

Como embaralhar os caracteres de uma string em C++ usando a função random_shuffle()

Quantidade de visualizações: 12835 vezes
Em algumas situações, tais como o desenvolvimento de um gerador de senhas aleatórias, pode ser necessário embaralharmos as letras de uma palavra. Em C++ isso pode ser feito por meio do uso da função random_shuffle() da STL (Standard Template Library). Não se esqueça de efetuar uma chamada a srand() antes do código que embaralha os caracteres da string.

Veja o código C++ completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <string>
#include <iostream>
#include <algorithm>
#include <time.h>

using namespace std;

int main(int argc, char *argv[]){
  // vamos iniciar o gerador de números
  // aleatórios
  srand(time(NULL));

  // vamos criar uma string
  string palavra = "JAVASCRIPT";
  cout << "Palavra original: " << palavra << endl;
  
  // vamos embaralhar as palavras da string
  random_shuffle(palavra.begin(), palavra.end());

  // exibe o resultado
  cout << "Palavra com caracteres embaralhados: " << palavra << "\n\n";

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

Palavra original: JAVASCRIPT
Palavra com caracteres embaralhados: RPSAITCVAJ


C++ ::: Dicas & Truques ::: Matemática e Estatística

Como testar se um número é primo em C++

Quantidade de visualizações: 3015 vezes
O Número Primo é o número maior que 1 e que só pode ser dividido por 1 e por ele mesmo, ou seja, números primos não podem ser divididos por outros números, a não ser por ele mesmo e pelo número 1. Dessa forma, 2, 3, 5, 7, 11, 13, 17, etc, são todos números primos.

É importante observar que 0 e 1 não são números primos, e que o número 2 é o único número primo par.

Veja agora um código C++ completo que pede para o usuário informar um número inteiro positivo e mostra uma mensagem indicando se o número informado é primo ou não:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>
#include <cstdlib>
   
using namespace std;
   
int main(int argc, char *argv[]){
  int numero;
  bool primo = true;
	
  // vamos solicitar um número inteiro positivo
  cout << "Informe um número inteiro positivo: ";
  cin >> numero;
    
  // o número é negativo?
  if(numero < 0){
    cout << "Número inválido.\n\n";
  }
  // é 0 ou 1?
  else if((numero == 0) || (numero == 1)){
    cout << "Número válido, mas não é primo.\n\n";
  }
  // passou até aqui. Vamos testar se o número é primo
  else{
    for (int i = 2; i <= (numero / 2); i++){
      // se passar no teste, não é primo
      if (numero % i == 0) {
        primo = false;
        break;
      }
    }
      
    if(primo){
      cout << "O número informado é primo\n\n";
    }
    else{
      cout << "O número informado não é primo\n\n";
    }
  }
       
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

Informe um número inteiro positivo: 9
O número informado não é primo


C++ ::: Dicas & Truques ::: Strings e Caracteres

Como substituir substrings em strings C++ usando a função replace()

Quantidade de visualizações: 10652 vezes
Nesta dica mostrarei como podemos usar a função replace() da classe String do C++ para substituir parte de uma palavra, frase ou texto, ou seja, substituir uma substring em uma string. Para isso nós vamos usar a seguinte assinatura da função replace():

string& replace(size_t pos1, size_t n1, const string& str);
Veja que precisamos fornecer a posição inicial, o tamanho e a nova substring.

Veja o código C++ completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos criar uma string
  string frase = "Gosto de Java";
  cout << "A frase e: " << frase << endl;	
	
  // vamos substituir Java por C++
  frase.replace(9, 4, "PHP"); 
	 
  // e mostramos o resultado	 
  cout << "Depois da substituicao: " << frase << endl; 
	 
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

A frase é: Gosto de Java
Depois da substituição: Gosto de PHP


Desafios, Exercícios e Algoritmos Resolvidos de C++

Veja mais Dicas e truques de C++

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 56 usuários muito felizes estudando em nosso site.