Jump to content

Programa para resolver eq de 2º grau


Lovian
 Share

Recommended Posts

olá pessoal,

eu estou me estreando na programaçao e comecei por fazer aqueles programas muito simples de imprimir imagens na consola,

eu estou a usar o qt para construir o codigo e faço-o para que este seja usado numa consola do qt, que vem com o programa,

eu fiz um programa para resolver mas nem sempre dá um resultado certo...

será que me podem dar uma ajuda? o programa ta em c++

#include <iostream>

#include <math.h>

using namespace std;

int main(){

    float a,b,c,x,y;

    a=0;

    b=0;

    c=0;

    x=0;

    y=0;

    cout << "Vamos resolver equaçoes de segundo grau"<< endl;

    cout << "Qual e o valor de a?"<< endl;

    cin >> a; // poe 22

    cout << endl;

    cout << "Qual e o valor de b?"<< endl;

    cin >> b; // poe 3

    cout << endl;

    cout << "Qual e o valor de c?"<<endl;

    cin >> c; // poe -8

    cout << endl;

    x=(-(b*😉+sqrt(-(🙂 - 4*a*c))/2*a;

    y=(-(b*B)-sqrt(-(B)- 4*a*c))/2*a;

    cout << " As soluções sao" << x << y ;

    return 0;

}

isto e o que eu fiz,

alguma ideia de pq nao funciona? eu juntei alguns valores pra a b c, estes nao me davam certos...

Link to comment
Share on other sites

A tua equação resolvente está mal. Teria que ser assim:

x=(-b+sqrt((b*b)- 4*a*c))/2*a;

E devias prevenir o facto de e equação poder não ter soluções reais...

PS: O mesmo se aplica ao y...

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

o erro da formula foi mesmo distração, mas se fosse um trabalho pra entregar bem me podia contentar com menos pontos... no entanto tbm ainda so tou no 11ºano...

para o fazer tenho de usar o delta nao é?

e o if else

certo?

mais uma pergunta de iniciante, o prevenir favorece o programa em que?

Link to comment
Share on other sites

A tua equação resolvente está mal. Teria que ser assim:

x=(-b+sqrt((b*b)- 4*a*c))/2*a;

E devias prevenir o facto de e equação poder não ter soluções reais...

PS: O mesmo se aplica ao y...

penso ja ter alterado tudo o que mencionou... juntei mais algumas coisas para ter uma aparencia mais legivel na consola

na linha de codigo juntei um parentesis sobre uma duvida... e mesmo depois de alterado o erro referido os nums que eu pos de exemplo continuam a nao dar o resultado certo, poderá ter haver com a maneira de como o computador corre o programa?

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

using namespace std;

int main(){

   float a,b,c,x,y,delta;

   a=0;
   b=0;
   c=0;
   x=0;
   y=0;
   cout << "Vamos resolver equaçoes de segundo grau"<< endl;
   cout << "Qual e o valor de a?"<< endl;
   cin >> a; // poe 22
   cout << endl;
   cout << "Qual e o valor de b?"<< endl;
   cin >> b; // poe 3
   cout << endl;
   cout << "Qual e o valor de c?"<<endl;
   cin >> c; // poe -8
   cout << endl;
   delta=sqrt((b*b)- 4*a*c);
   if (delta>0) {
       cout<<"A equacao tem duas solucoes";
   }
   if (delta=0) {
       cout<<"A equacao tem uma solução";
   }
   if (delta<0) {
       cout<<"A equacao nao tem solucoes reais";

       // se for este o caso como digo ao programa para interromper? e ja agora como faço para a consola nao se fechar aseguir ao programa acabar de correr
   }
   x=(-b+sqrt((b*b)- 4*a*c))/2*a;
   y=(-b-sqrt((b*b)- 4*a*c))/2*a;
   cout << endl << " As soluções sao" <<" "<< x <<" "<< "e" <<" "<< y ;

   return 0;

}
Link to comment
Share on other sites

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

using namespace std;

int main(){

   float a,b,c,x,y,delta;

   a=0;
   b=0;
   c=0;
   x=0;
   y=0;
   cout << "Vamos resolver equaçoes de segundo grau"<< endl;
   cout << "Qual e o valor de a?"<< endl;
   cin >> a; // poe 22
   cout << endl;
   cout << "Qual e o valor de b?"<< endl;
   cin >> b; // poe 3
   cout << endl;
   cout << "Qual e o valor de c?"<<endl;
   cin >> c; // poe -8
   cout << endl;
   delta=sqrt((b*b)- 4*a*c);
   if (delta>0) {
       cout<<"A equacao tem duas solucoes";
       x=(-b+delta)/(2*a);
       y=(-b-delta)/(2*a);
      cout << endl << " As soluções sao" <<" "<< x <<" "<< "e" <<" "<< y ;
   } else  if (delta=0) {
       cout<<"A equacao tem uma solução";
       x=(-b+delta)/(2*a);
      cout << endl << " A soluções é" <<" "<< x ;
   } else  if (delta<0) {
       cout<<"A equacao nao tem solucoes reais";
   }

   getchar();
   return 0;

}

Assim deve funcionar. Repara que a aplicação só terminará quando pressionares uma tecla (não tenho a certeza se não é necessário carregar nenhuma biblioteca para o usar no c++). Atenção que eu não testei, mas penso que esteja ok.

Qual é o resultado (segundo um a, um b e um c) é que te dá e qual é o que pensas que deveria dar?

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

as alterações que fez afectam o funcionamento do programa de alguma forma?

quando tentei correr o programa dá-me um erro e uma chamada de atenção...

vou colar em baixo

error: 'getchar' was not declared in this scope

warning: suggest parentheses around assignment used as truth value

Link to comment
Share on other sites

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

using namespace std;

int main(){

   float a,b,c,x,y,delta;

   a=0;
   b=0;
   c=0;
   x=0;
   y=0;
   cout << "Vamos resolver equaçoes de segundo grau"<< endl;
   cout << "Qual e o valor de a?"<< endl;
   cin >> a; // poe 22
   cout << endl;
   cout << "Qual e o valor de b?"<< endl;
   cin >> b; // poe 3
   cout << endl;
   cout << "Qual e o valor de c?"<<endl;
   cin >> c; // poe -8
   cout << endl;
   delta=sqrt((b*b)- 4*a*c);
   if (delta>0) {
       cout<<"A equacao tem duas solucoes";
       x=(-b+delta)/(2*a);
       y=(-b-delta)/(2*a);
      cout << endl << " As soluções sao" <<" "<< x <<" "<< "e" <<" "<< y ;
   } else  if (delta==0) {
       cout<<"A equacao tem uma solução";
       x=(-b+delta)/(2*a);
      cout << endl << " A soluções é" <<" "<< x ;
   } else  if (delta<0) {
       cout<<"A equacao nao tem solucoes reais";
   }

   getchar();
   return 0;

}

Pois sempre precisavas de incluir a biblioteca cstdio para o getchar funcionar. E na comparação só estavas a utilizar um igual, quando uma comparação de igualdade são dois

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

O getchar vai fazer com que o programa espere uma introdução do utilizador, deste modo a aplicação só é terminada quando o utilizador lhe "dá um carácter".

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.