Ir ao conteúdo
  • Cadastre-se

Javascript Calculadora de Anti-base não me retorna o resultado da minha função


Posts recomendados

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Calculadora de Anti-base</title>
  <style>
    /* Estilo para a fonte do textarea */
    textarea {
      font-family: monospace;
    }
  </style>
</head>
<body>
  <h1>Calculadora de Anti-base</h1>

  <!-- Entrada da matriz de adjacência -->
  <label for="matriz">Insira a matriz de adjacência:</label><br>
  <textarea id="matriz" rows="5" cols="50"></textarea><br><br>

  <!-- Botão para calcular a anti-base -->
  <button onclick="calcularAntiBase()">Calcular Anti-base</button><br><br>

  <!-- Exibição do resultado -->
  <div id="resultado"></div>

  <!-- Script JavaScript -->
  <script>
    function calcularAntiBase() {
      // Obtém a matriz de adjacência a partir da entrada do usuário
      const matrizStr = document.getElementById("matriz").value;
      const matrizLinhas = matrizStr.trim().split("\n");
      const matrizAdjacencia = matrizLinhas.map(linha => linha.trim().split(" ").map(num => parseInt(num)));

      // Calcula a anti-base da matriz de adjacência
      const antiBase = encontrarAntiBase(matrizAdjacencia);

      // Exibe o resultado
      const resultadoStr = "Anti-base: " + antiBase.join(", ");
      document.getElementById("resultado").innerText = resultadoStr;
    }

    function encontrarAntiBase(matrizAdjacencia) {
      const numLinhas = matrizAdjacencia.length;
      const numColunas = matrizAdjacencia[0].length;

      // Inicializa matriz aumentada com os mesmos valores da matriz de adjacência
      const matrizAumentada = [];
      for (let i = 0; i < numLinhas; i++) {
        matrizAumentada[i] = [];
        for (let j = 0; j < numColunas; j++) {
          matrizAumentada[i][j] = matrizAdjacencia[i][j];
        }
      }

      // Aplica eliminação gaussiana para obter matriz escalonada
      for (let k = 0; k < numLinhas; k++) {
        // Encontra a linha com o maior valor absoluto na coluna k
        let maxLinha = k;
        for (let i = k + 1; i < numLinhas; i++) {
          if (Math.abs(matrizAumentada[i][k]) > Math.abs(matrizAumentada[maxLinha][k])) {
            maxLinha = i;
          }
        }

        // Troca a linha atual com a linha com o maior valor absoluto na coluna k
        const temp = matrizAumentada[k];
        matrizAumentada[k] = matrizAumentada[maxLinha];
        matrizAumentada[maxLinha] = temp;

        // Aplica eliminação gaussiana para tornar zeros abaixo da diagonal principal
        // Aplica eliminação gaussiana para tornar zeros abaixo da diagonal principal
        for (let i = k + 1; i < numLinhas; i++) {
          const fator = matrizAumentada[i][k] / matrizAumentada[k][k];
          matrizAumentada[i][k] = 0;
          for (let j = k + 1; j < numColunas; j++) {
            matrizAumentada[i][j] = matrizAumentada[i][j] - fator * matrizAumentada[k][j];
          }
        }
      }

      // Encontra a anti-base da matriz de adjacência
      const antiBase = [];
      for (let i = 0; i < numLinhas; i++) {
        let naoNulo = false;
        for (let j = 0; j < numColunas; j++) {
          if (matrizAumentada[i][j] !== 0) {
            naoNulo = true;
            break;
          }
        }
        if (!naoNulo) {
          antiBase.push(i);
        }
      }
      return antiBase;
    }
  </script>
</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!