Ir ao conteúdo

Posts recomendados

Postado

eu fiz o codigo, aparentemente não tem nada errado, mas sempre na hora de dar o resultado da raiz de delta (o ultimo if) aparece o texto na tela certinho e tudo, só que o número que era pra ser a resposta fica como nan

 

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

using namespace std;

int main(){
    setlocale(LC_ALL, "Portuguese");

    float numero1, numero2, numero3, resposta, delta, raiz1, raiz2;

     cout << "digite o primeiro número: " << endl;
     cin >> numero1;

     cout << "digite o segundo número: " << endl;
     cin >> numero2;

     cout << "digite o terceiro número: " << endl;
     cin >> numero3;

     if (numero1==0){
       cout << "A equação não é do segundo grau." << endl;


    }
     if (numero2==0) {
      cout << "A equação não é do primeiro grau." << endl;


    }
     if (numero2!=0 and numero1==0) {
        resposta= -numero3/ numero2;
        cout << "O resultado e: " << resposta << endl;

     }

     if (numero1!=0) {
        delta= (numero2*numero2)-4*numero1*numero3;
        if(numero1<0 || numero1>0) {
            raiz1= (-numero2 - sqrt(delta)) / (2* numero1);
            raiz2= (-numero2 + sqrt(delta)) / (2* numero1);
            cout << " A primeira raiz é  " << raiz1 << "A segunda raiz é:  " << raiz2 << endl;

        }
        else {
            cout << "Não há raizes reais." << endl;
        }


     }


return 0;
}
 

Postado

Use o tal botão code como explicado no forum. logo no início...
 

Veja a diferença

 

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

using namespace std;

int main(){
    setlocale(LC_ALL, "Portuguese");

    float numero1, numero2, numero3, resposta, delta, raiz1, raiz2;

     cout << "digite o primeiro número: " << endl;
     cin >> numero1;

     cout << "digite o segundo número: " << endl;
     cin >> numero2;

     cout << "digite o terceiro número: " << endl;
     cin >> numero3;

     if (numero1==0){
       cout << "A equação não é do segundo grau." << endl;


    }
     if (numero2==0) {
      cout << "A equação não é do primeiro grau." << endl;


    }
     if (numero2!=0 and numero1==0) {
        resposta= -numero3/ numero2;
        cout << "O resultado e: " << resposta << endl;

     }

     if (numero1!=0) {
        delta= (numero2*numero2)-4*numero1*numero3;
        if(numero1<0 || numero1>0) {
            raiz1= (-numero2 - sqrt(delta)) / (2* numero1);
            raiz2= (-numero2 + sqrt(delta)) / (2* numero1);
            cout << " A primeira raiz é  " << raiz1 << "A segunda raiz é:  " << raiz2 << endl;

        }
        else {
            cout << "Não há raizes reais." << endl;
        }


     }
return 0;
}

 

Use os coeficientes do polinômio clássico, é mais fácil de ler:
 

	y = ax^2 + bx + c

 

 

ao invés desses nomes grandes...

 

Use double para os tipos  para não ter conversões implícitas.

 

Teste com constantes

 

Pode ler os 3 números de uma vez

 

Essa é a fórmula de Bhaskara do ensino fundamental. Onde está testando para delta negativo? Está testando o valor de numero1, o coeficiente a?

 

 

 

 

 

 

 

 

Postado
21 horas atrás, arfneto disse:

Use o tal botão code como explicado no forum. logo no início...
 

Veja a diferença

 

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

using namespace std;

int main(){
    setlocale(LC_ALL, "Portuguese");

    float numero1, numero2, numero3, resposta, delta, raiz1, raiz2;

     cout << "digite o primeiro número: " << endl;
     cin >> numero1;

     cout << "digite o segundo número: " << endl;
     cin >> numero2;

     cout << "digite o terceiro número: " << endl;
     cin >> numero3;

     if (numero1==0){
       cout << "A equação não é do segundo grau." << endl;


    }
     if (numero2==0) {
      cout << "A equação não é do primeiro grau." << endl;


    }
     if (numero2!=0 and numero1==0) {
        resposta= -numero3/ numero2;
        cout << "O resultado e: " << resposta << endl;

     }

     if (numero1!=0) {
        delta= (numero2*numero2)-4*numero1*numero3;
        if(numero1<0 || numero1>0) {
            raiz1= (-numero2 - sqrt(delta)) / (2* numero1);
            raiz2= (-numero2 + sqrt(delta)) / (2* numero1);
            cout << " A primeira raiz é  " << raiz1 << "A segunda raiz é:  " << raiz2 << endl;

        }
        else {
            cout << "Não há raizes reais." << endl;
        }


     }
return 0;
}

 

Use os coeficientes do polinômio clássico, é mais fácil de ler:
 

	y = ax^2 + bx + c

 

 

ao invés desses nomes grandes...

 

Use double para os tipos  para não ter conversões implícitas.

 

Teste com constantes

 

Pode ler os 3 números de uma vez

 

Essa é a fórmula de Bhaskara do ensino fundamental. Onde está testando para delta negativo? Está testando o valor de numero1, o coeficiente a?

 

 

 

 

 

 

 

 

 

eu estou testando desde ontem e até agora não parou, ja diminui a variaveis pra ficar mais fácil de ler, ja olhei todo o codigo e nada..

Postado

poste o código...

 

Seu programa original está bem confuso, como eu disse. E é basicamente um programa C e não C++

 

Ainda sobre o programa

 

    if (numero1 == 0)
    {
        cout << "A equação não é do segundo grau." << endl;
    }
    if (numero2 == 0)
    {
        cout << "A equação não é do primeiro grau." << endl;
    }
    if (numero2 != 0 and numero1 == 0)
    {
        resposta = -numero3 / numero2;
        cout << "O resultado e: " << resposta << endl;
    }

 

Isso está errado: use else para não repetir os testes

 

    if (numero1 != 0)
    {
        delta = (numero2 * numero2) - 4 * numero1 * numero3;
        if (numero1 < 0 || numero1 > 0)
        {
            raiz1 = (-numero2 - sqrt(delta)) / (2 * numero1);
            raiz2 = (-numero2 + sqrt(delta)) / (2 * numero1);
            cout << " A primeira raiz é  " << raiz1
                 << "A segunda raiz é:  " << raiz2 << endl;
        }
        else
        {
            cout << "Não há raizes reais." << endl;
        }
    }

    return 0;

 

Porque não testa o simples, o valor de delta?

 

E já não testou antes numero1 != 0 na linha 21?

 

E isso 

        if (numero1 < 0 || numero1 > 0)

 

Não é só uma maneira confusa de testar se numero1 é diferente de zero, o que você acabou de testar duas linhas acima???

 

Aplique a fórmula apenas. Em C++

 

 

 

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...