joaopaulolessa Postado Abril 23, 2021 Denunciar Share Postado Abril 23, 2021 /* Programa para calcular as raizes da equacao do segundo grau e os pontos maximo e minimo Autor: Joao Paulo Lessa Data:20/04/2021 */ #include <iostream> #include <math.h> using namespace std; int tipoFunc(float a, float b,float c){ if (a==0 && b!=0 && c!=0){ return 1; } else if (a==0 && b==0 && c!=0) { return 2; } else if (a==0 && b==0 && c==0){ return 3; } else if (a!= 0 && b==0 && c!=0){ return 4; } else if (a!=0 && b== 0 && c==0){ return 5; } else if (a!=0 && b!=0 && c==0){ return 6; } else if (a==0 && b!=0 && c==0){ return 7; } else { return 8; } float funcAfim (float b, float c) { float resultado; resultado = ((-1)*c/b); return resultado; } float funcRaiz (float a, float c){ float teste, resultado; teste = -c/a; if (teste < 0){ cout << " A fracao -c/a e menor que zero, logo: " << endl; cout << " A raiz não é Real!!! " << endl; cout << " O ponto de maximo ou minimo não pode ser calculado! " << endl; // goto fim; } else { resultado = sqrt(teste); } return resultado; } float delta (float a, float b, float c) { float resultado; resultado = b*b-4*a*c; return resultado; } float baskara (float a, float b, float c, int j){ float teste, resultado; teste = delta(a,b,c); if (delta<0){ cout << " não existe raizes reais!!!"; } else { resultado = (-b+j*sqrt(delta(a,b,c)))/(2*a); return resultado; } } int main (){ float a,b,c,x1,x2,pm; int n; cin >> a; cin >> b; cin >> c; n = tipoFunc(a,b,c); if ( n==1){ x1 = funcAfim(b,c); cout << " A funcao passar a ser do primeiro grau, com raiz: " << x1 << endl; cout << " O ponto de maximo ou minimo não pode ser calculado. " << endl; } else if (n==2){ x1 = c cout << "A funcao é constante de valor: " << x1 << endl; } else if (n==3) { cout << " Todos os coeficientes são zero, portanto a funcao é igual a 0. " << endl; cout << " O ponto de maximo ou minino não existe!!! " << endl; } else if (n==4) { x1 = funcRaiz (a,c); x2 = -x1; cout << " A raizes são: " << endl; cout << " X1: " << x1 << endl; cout << " X2: " << x2 << endl; cout << " O ponto de maximo é: " << endl; cout << " Xv = " << (-b/(2*a)) << endl; cout << " Yv = " << (-delta(a,b,c)/4*a) << endl; } else if (n==5) { cout << "Ambas as raizes são zero!!! " << endl; cout << " O ponto de maximo ou minimo é igual a zero! " << endl; } else if (n==6) { x1 = 0; x2 = funcAfim (a,b); cout << " X1 é: " << x1 << endl; cout << " X2 é: " << x2 << endl; cout << " O ponto de maximo é: " << endl; cout << " Xv = " << (-b/(2*a)) << endl; cout << " Yv = " << (-delta(a,b,c)/4*a) << endl; } else if (n==7) { cout << " A funcao passa a ser do primeiro grau, sendo raiz igual a zero! " << endl; cout << " O ponto de maximo ou minimo não é calculado! " << endl; } else { x1 = baskara (a,b,c,0); x2 = baskara (a,b,c,1); cout << "As raizes da funcao são: " << endl; cout << x1 << endl; cout << x2 << endl; cout << " Xv = " << (-b/(2*a)) << endl; cout << " Yv = " << (-delta(a,b,c)/4*a) << endl; } // fim: return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 23, 2021 Denunciar Share Postado Abril 23, 2021 Veja essa função simplificada https://www.cmmprogressivo.net/2019/10/Equacao-2-grau-Cpp-Bhaskara-Como-resolver.html abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
joaopaulolessa
/*
Programa para calcular as raizes da equacao do segundo grau e os pontos maximo e minimo
Autor: Joao Paulo Lessa
Data:20/04/2021
*/
#include <iostream>
#include <math.h>
using namespace std;
int tipoFunc(float a, float b,float c){
if (a==0 && b!=0 && c!=0){
return 1;
}
else if (a==0 && b==0 && c!=0) {
return 2;
} else if (a==0 && b==0 && c==0){
return 3;
} else if (a!= 0 && b==0 && c!=0){
return 4;
} else if (a!=0 && b== 0 && c==0){
return 5;
} else if (a!=0 && b!=0 && c==0){
return 6;
} else if (a==0 && b!=0 && c==0){
return 7;
} else {
return 8;
}
float funcAfim (float b, float c) {
float resultado;
resultado = ((-1)*c/b);
return resultado;
}
float funcRaiz (float a, float c){
float teste, resultado;
teste = -c/a;
if (teste < 0){
cout << " A fracao -c/a e menor que zero, logo: " << endl;
cout << " A raiz não é Real!!! " << endl;
cout << " O ponto de maximo ou minimo não pode ser calculado! " << endl;
// goto fim;
} else {
resultado = sqrt(teste);
}
return resultado;
}
float delta (float a, float b, float c) {
float resultado;
resultado = b*b-4*a*c;
return resultado;
}
float baskara (float a, float b, float c, int j){
float teste, resultado;
teste = delta(a,b,c);
if (delta<0){
cout << " não existe raizes reais!!!";
} else {
resultado = (-b+j*sqrt(delta(a,b,c)))/(2*a);
return resultado;
}
}
int main (){
float a,b,c,x1,x2,pm;
int n;
cin >> a;
cin >> b;
cin >> c;
n = tipoFunc(a,b,c);
if ( n==1){
x1 = funcAfim(b,c);
cout << " A funcao passar a ser do primeiro grau, com raiz: " << x1 << endl;
cout << " O ponto de maximo ou minimo não pode ser calculado. " << endl;
} else if (n==2){
x1 = c
cout << "A funcao é constante de valor: " << x1 << endl;
} else if (n==3) {
cout << " Todos os coeficientes são zero, portanto a funcao é igual a 0. " << endl;
cout << " O ponto de maximo ou minino não existe!!! " << endl;
} else if (n==4) {
x1 = funcRaiz (a,c);
x2 = -x1;
cout << " A raizes são: " << endl;
cout << " X1: " << x1 << endl;
cout << " X2: " << x2 << endl;
cout << " O ponto de maximo é: " << endl;
cout << " Xv = " << (-b/(2*a)) << endl;
cout << " Yv = " << (-delta(a,b,c)/4*a) << endl;
} else if (n==5) {
cout << "Ambas as raizes são zero!!! " << endl;
cout << " O ponto de maximo ou minimo é igual a zero! " << endl;
} else if (n==6) {
x1 = 0;
x2 = funcAfim (a,b);
cout << " X1 é: " << x1 << endl;
cout << " X2 é: " << x2 << endl;
cout << " O ponto de maximo é: " << endl;
cout << " Xv = " << (-b/(2*a)) << endl;
cout << " Yv = " << (-delta(a,b,c)/4*a) << endl;
} else if (n==7) {
cout << " A funcao passa a ser do primeiro grau, sendo raiz igual a zero! " << endl;
cout << " O ponto de maximo ou minimo não é calculado! " << endl;
} else {
x1 = baskara (a,b,c,0);
x2 = baskara (a,b,c,1);
cout << "As raizes da funcao são: " << endl;
cout << x1 << endl;
cout << x2 << endl;
cout << " Xv = " << (-b/(2*a)) << endl;
cout << " Yv = " << (-delta(a,b,c)/4*a) << endl;
}
// fim:
return 0;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.