Javascript program to calculate bhaskara formula does not work

-1

I'm developing a simple program to help in calculating the bhaskara formula (the one we learned at school) I already have a C code that works perfectly, but when I was "porting" to JavaScript, it just does not work, I tested some functions separately (the if function and Math.sqrt () work perfectly isolated) but I can not make it work.

I will be making the code available in JavaScript (which does not work) and the C code (which works), thank you in advance for helping 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>

C code (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");

}
    
asked by anonymous 27.08.2016 / 14:15

1 answer

0

Good morning Luis,

I've given a refactor to your code and it's working now.

Your problem was in the name of the variables that you must have slipped at the time of typing:

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

In addition, it is very important that you wait for page elements to be fully interpreted by the browser so that you can manipulate them using JavaScript, so use the window.onload function that will execute a function as soon as an event is triggered by the browser indicating that the elements are OK!

Finally, below is the code working. I performed the tests with the numbers: 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 you have helped.

    
27.08.2016 / 16:30