Ajude nosso projeto a se manter online.

Equação do segundo grau em C++ - Bháskara

Neste tutorial de C++, vamos aprender como resolver uma equação do 2º grau, usando a fórmula de Bháskara, em C++. É uma questão de nossa lista de exercícios de testes condicionais:
  • 11. Faça um programa que calcule as raízes de uma equação do segundo grau, na forma ax² + bx + c. O programa deverá pedir os valores de a, b e c e fazer as consistências, informando ao usuário nas seguintes situações:   
    Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado;
       
    Se o delta calculado for negativo, a equação não possui raízes reais. Informe ao usuário e encerre o programa;
       
    Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário;
     
    Se o delta for positivo, a equação possui duas raiz reais; informe-as ao usuário;

Fórmula de Bháskara em C++

Primeiro, pedimos os três coeficientes a, b c.
Também declaramos a variável delta para armazenar o delta (jura?) e root1 e root2, para armazenar as raízes.

O primeiro teste é verificar se a é diferente de 0, somente se for é que podemos calcular as raízes.
Se não for, cai no ELSE e avisamos que a equação não existe.

Sendo diferente de 0, temos que calcular o delta:
De Bháskara: delta = b² - 4ac

Agora, vamos testar o delta.
Se for negativo, dizemos que não tem raiz real.
Se for 0, calculamos a única raiz: (-b/2a)
Se for maior que 0, calculamos as duas raizes (-b- raiz(delta))/2a e (-b+raiz(delta))/2a

Veja como ficou nosso código:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float a, b, c, delta,
          root1, root2;

    cout << "Coeficiente a: ";
    cin >> a;

    cout << "Coeficiente b: ";
    cin >> b;

    cout << "Coeficiente c: ";
    cin >> c;

    if(a != 0){
        delta = (b*b) - (4*a*c);

        if(delta<0){
            cout <<"Não tem raízes reais\n";
        }
        else if (delta==0){
            root1=(-b)/(2*a);
            cout << "Possui apenas uma raiz real: "<<root1<<endl;
        }else{
            root1=(-b - sqrt(delta))/(2*a);
            root2=(-b + sqrt(delta))/(2*a);
            cout << "Raiz 1: "<<root1<<endl;
            cout << "Raiz 2: "<<root2<<endl;
        }
    }else{
        cout <<"a=0, não é uma equação do segundo grau\n";
    }

}

Desafio de C++

Você consegue resolver essa questão para dar raízes complexas?

Nenhum comentário:

Postar um comentário