Javascript program to calculate bhaskara formula does not work

Asked

Viewed 5,171 times

-1

I am developing a simple program to help in the calculation of bhaskara formula (the one we learned in school) I already have a code made in C that works perfectly, but when I was "port" to Javascript, it just doesn’t work, I have tested some functions separately ( if function and Math.sqrt() work perfectly in isolation) but I cannot make it work.

I will be making available the code in Javascript (that does not work) and the code in C (that works), I thank in advance those who help me.

Javascript code (does not work)

<!DOCTYPE html>
<html>
<head>

    <meta charset="utf-8">

    <title> Cálculo de Bhaskara </title>

    <script LANGUAGE="JavaScript" type="text/javascript">

// Abaixo recebemos do usuário o valor do A, B e C.

    var valora = parseInt(prompt("Digite o valor de A: "));
    var valorb = parseInt(prompt("Digite o valor de B: "));
    var valorc = parseInt(prompt("Digite o valor de C: "));

//  Abaixo calculamos a fórmula propriamente dita.

    var quadradodeb = valorb * valorb;

    var delta = quadradodeb - 4 * (valora * valorc);

//  Abaixo verificamos se o Delta é = 0 ou <0 e se é possível continuar a calcular.

    if(delta < 0){
        document.write("Não é possível calcular pois o Delta é menor que zero.");
    }

    if(delta == 0){
        document.write("O Delta é zero, portando os valores de X1 e X2 serão iguais.<br>");
    }


    var valordebneg = valordeb * (-1);  /* INVERTE O SINAL DO B */

    var raizdedelta = Math.sqrt(delta); /* CALCULA A RAIZ DO DELTA, NO CASO, FEITO PELA FUNÇÃO Math.sqrt(variável) */

    var divisor = 2 * valordea; /* CALCULA O DIVISOR, NO CASO QUE DIVIDIRÁ B + RAIZ DE DELTA */

    var resultadox1 = (valordebneg + raizdedelta) / divisor;    /* CALCULA O X1 */

    var resultadox2 = (valordebneg - raizdedelta) / divisor;    /* CALCULA O X2 */


    document.write("∆ = B² - 4 X A X C<br>");
    document.write("∆ = " + quadradodeb + " - 4 X " + valora + " X " + valorb);
    document.write("<br>∆ = " + delta);

    document.write("<br>X = -B +ou- √∆ <br>__________________<br>      2 X A");
    document.write("<br> X = " + valordebneg + " +ou- " + raizdedelta + "<br>____________________<br>      2 X " + valora);
    document.write("<br><br>X1 = " + quadradodeb + " + " + raizdedelta + " / " + divisor);
    document.write("<br>X1 = " +resultadox1);

    document.write("<br><br>X2 = " + quadradodeb + " - " + raizdedelta + " / " + divisor);
    document.write("<br>X2 = " +resultadox2);

</script>
</head>
<body>
</body>
</html>

Code in C (works)

#include<stdio.h>
#include<stdlib.h>
#include <math.h>   /* função sqrt(); */
int main()
{

    float valordea, valordeb, valordec, resultadox1, resultadox2, quadradodeb, delta, valordex, raizdedelta, valordebneg, divisor;


/* AQUI SE INPUTAM OS VALORES DE A B e C. */

    printf("Este programa faz e demonstra o processo da formula de Bhaskara.\n Siga o exemplo para inserir os Valores:\n (A)*X2 (B)*X (C) = 0\n\n");

    printf("Digite o valor de A:\n");
    scanf("%f",&valordea);

    printf("\nDigite o valor de B:\n");
    scanf("%f",&valordeb);

    printf("\nDigite o valor de C:\n");
    scanf("%f",&valordec);

/* AQUI SE APLICA A FÓRMULA DE BHASKARA EM VARIÁVEIS QUE SERÃO MOSTRADAS DEPOIS */

    quadradodeb=valordeb*valordeb;  /* CALCULA O QUADRADO DE B */

    delta=quadradodeb-4*valordea*valordec;  /* CALCULA O DELTA */

/* ---------------------------------------------------------------------------------------*/

    /* CALCULA SE É POSSÍVEL PROSSEGUIR COM A CONTA */

    if(delta<0) /* ESCREVE NA TELA CASO O DELTA SEJA MENOR QUE ZERO. */
    {
        system("cls");
        printf("\n Nao e possivel calcular, o delta e menor que zero. \n\n");
        system("pause");
        return 0;
    }

    if(delta==0)    /* ESCREVA NA TELA SE O X1 E X2 SERÃO IGUAIS */
    {
        system("cls");
        printf("\n\nO valor de delta e zero, portanto as duas raizes (X1 e X2) sao iguais.\n\n");
    }

/* ---------------------------------------------------------------------------------------*/

    valordebneg=valordeb*(-1);  /* INVERTE O SINAL DO B */

    raizdedelta=sqrt(delta);    /* CALCULA A RAIZ DO DELTA */

    divisor=2*valordea; /* CALCULA O DIVISOR, NO CASO QUE DIVIDIRÁ B + RAIZ DE DELTA */

    resultadox1=(valordebneg+raizdedelta)/divisor;  /* CALCULA O X1 */

    resultadox2=(valordebneg-raizdedelta)/divisor;  /* CALCULA O X2 */

system("cls");

    printf("Delta=B2-4*A*C \n");    /* MOSTRA A FÓRMULA */
    printf("\nDelta = %.2f - 4 * %.2f * %.2f\n",quadradodeb, valordea, valordeb);   /*MOSTRA O RESULTANDO NA FÓRMULA */
    printf("\nDelta = %.2f\n\n\n",delta);

    printf("X = -B +ou- Raiz de Delta \n _________________________\n           2*A         \n\n");  /* MOSTRA A FÓRMULA */

    printf("\nX1 = %.2f + %.2f Dividido por %.2f\n", quadradodeb, raizdedelta, divisor);    /*MOSTRA O RESULTANDO NA FÓRMULA */
    printf("\nX1 = %.2f\n\n\n",resultadox1);

    printf("\nX2 = %.2f - %.2f Dividido por %.2f\n", quadradodeb, raizdedelta, divisor);/*MOSTRA O RESULTANDO NA FÓRMULA */
    printf("\nX2 = %.2f\n\n\n",resultadox2);

    system ("pause");

}

1 answer

0


Good morning Luis,

I refactored your code and now it’s working.

Your problem was in the name of the variables you must have made some slip at the time of typing:

Where: var valordebneg = valordeb * (-1); valordeb does not exist. You had declared: valorb.

Furthermore, it is very important that you wait for the page elements to be fully interpreted by the browser to be able to manipulate them using Javascript, so use the function window.onload which will perform a function as soon as an event is triggered by the browser indicating that the elements are OK!

Anyway, below is the code working. I ran the numbers tests: a = 1, b = 3 and c = -10.

<!DOCTYPE html>
<html lang="pt-BR">

<head>
  <meta charset="UTF-8" />
  <script>
    window.onload = function() {
      var valora = parseInt(prompt("Digite o valor de A: "));
      var valorb = parseInt(prompt("Digite o valor de B: "));
      var valorc = parseInt(prompt("Digite o valor de C: "));

      var quadradodeb = valorb * valorb;

      console.log(quadradodeb);

      var delta = quadradodeb - 4 * valora * valorc;

      console.log(delta);

      if (delta < 0) {
        document.write("Não é possível calcular pois o Delta é menor que zero.");
        return;
      }

      if (delta == 0) {
        document.write("O Delta é zero, portando os valores de X1 e X2 serão iguais.<br>");
        return;
      }

      var valordebneg = valorb * (-1); /* INVERTE O SINAL DO B */

      var raizdedelta = Math.sqrt(delta); /* CALCULA A RAIZ DO DELTA, NO CASO, FEITO PELA FUNÇÃO Math.sqrt(variável) */

      var divisor = 2 * valora; /* CALCULA O DIVISOR, NO CASO QUE DIVIDIRÁ B + RAIZ DE DELTA */

      var resultadox1 = (valordebneg + raizdedelta) / divisor; /* CALCULA O X1 */

      var resultadox2 = (valordebneg - raizdedelta) / divisor; /* CALCULA O X2 */


      document.write("∆ = B² - 4 X A X C<br>");
      document.write("∆ = " + quadradodeb + " - 4 X " + valora + " X " + valorb);
      document.write("<br>∆ = " + delta);

      document.write("<br>X = -B +ou- √∆ <br>__________________<br>      2 X A");
      document.write("<br> X = " + valordebneg + " +ou- " + raizdedelta + "<br>____________________<br>      2 X " + valora);
      document.write("<br><br>X1 = " + quadradodeb + " + " + raizdedelta + " / " + divisor);
      document.write("<br>X1 = " + resultadox1);

      document.write("<br><br>X2 = " + quadradodeb + " - " + raizdedelta + " / " + divisor);
      document.write("<br>X2 = " + resultadox2);
    }
  </script>
</head>

</html>

I hope it helped.

  • Thank you very much! I spent a lot of time looking for problems but it was something so simple, thank you for your answer! Soon this code will be part of an educational project, I will remember your help until the end of the conclusion.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.