Ir ao conteúdo
  • Cadastre-se

C++ Calculo de Bhaskara CODE Arrumado


HeloBM

Posts recomendados

Na aula hoje o professor nos pediu para fazer o calculo de Bhaskara e tem uma observação: A deve ser diferente de zero. 

image.thumb.png.9a1cc0893c9ab46dc79b6307a60127e6.png

Consegui pensar no código mas não sei como resolver isso.. o resultado de x1 e x2 dá erro... 

 

Eu tinha colocado números muito pequenos e o calculo estava dando erro por isso... testando o código com a = 1, b = 12 e c = – 13 deu certo. 

Agora tenho duas outras dúvidas... quando aparece o resultado de x1 e x2 eu queria colocar uma virgula pra separar  se eu colocar simplesmente 

cout<< "Os valores de x1 e x2 são respecitvamente"<<x1<<","<<x2;  dá certo??

E como faço para esse not-a-number nunca mais aparecer? (eu queria colocar uma mensagem na tela caso o resultado fosse esse pedindo pro usuário colocar números maiores)

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Esse erro chamado nan, significa Not A Number. Isso acontece porque algum resultado não é numérico.

 

Pelo seu código, dá para ver que você só se preocupou em verificar se a != 0, mas pelos valores que você informou:

a = 4

b = 1

c = 2

Delta = -31.


Na hora que vai calcular a raiz quadrada, o erro é lançado porque não existe raiz de número negativo.

 

Dica: É uma boa prática de programação, inicializar todas as variáveis logo ao declará-las.

 

Segue um exemplo de como ficaria o código:

#include <iostream>
#include <math.h>

int main(){
    double a = 0;
    double b = 0;
    double c = 0;
    double delta = 0;
    double raizDelta = 0;
    double x1 = 0;
    double x2 = 0;

    std::cout << "Digite os valores de a, b, c separados por espaço:" << std::endl;
    std::cout << "> ";
    std::cin >> a;
    std::cin >> b;
    std::cin >> c;

    if (a == 0) {
        std::cout << "O 'A' não pode ser 0!" << std::endl;
        return 1;   // Encerra o programa. Valor diferente de 0 indica falha.
    }

    delta = std::pow(b, 2) - (4 * a * c);

    std::cout << " A: " << a << std::endl;
    std::cout << " B: " << b << std::endl;
    std::cout << " C: " << c << std::endl;
    std::cout << " D: " << delta << std::endl;

    if (delta >= 0) {
        raizDelta = std::sqrt(delta);

        x1 = (-b + raizDelta) / (2 * a);
        x2 = (-b - raizDelta) / (2 * a);

        std::cout << "RD: " << raizDelta << std::endl;
        std::cout << "X1: " << x1 << std::endl;
        std::cout << "X2: " << x2 << std::endl;
    } else {
        std::cout << "Delta é NEGATIVO. Não tem como continuar a conta." << std::endl;
    }

    return 0;
}

 

adicionado 5 minutos depois
1 hora atrás, HeloBM disse:

Eu tinha colocado números muito pequenos e o calculo estava dando erro por isso... testando o código com a = 1, b = 12 e c = – 13 deu certo. 

Essa combinação de valores resulta no delta = 196. Em outras palavras foi pura sorte ter dado certo.

  • Curtir 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!