Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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

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!