Galera, boa noite.
Eu comecei a fazer um programa para resolver equações de 2 grau, mas não ta indo…
Quer dizer. o programa ta rodando lisinho, mas acho que o erro tá na conta do bhakara, pq mesmo ele calculando o delta corretamente, a(s) raíz(es) saem erradas.
//Método que usa Bháskara para calcular as raízes.
public float[] bhaskara(){
float[] res = null;
if(checaDelta(calculaDelta()) == 1){
res = new float[1];
res[0] = -b/(2*a);
}else if(checaDelta(calculaDelta()) == 2){
res = new float[2];
res[0] = (float) ((-b + Math.sqrt(calculaDelta())) / (2*a));
res[1] = (float) ((-b - Math.sqrt(calculaDelta())) / (2*a));
}
return res;
}
A função “checaDelta()” existe somente para verificar se delta é = 0, > 0, < 0. Decidi criar um método apenas pra isso. Pra resumir, se for = 1, então só há uma raíz, se nao terá duas.
E o vetor res (resposta) vai ser criado dependendo do número de raízes possíveis e depois entrará em um método que o percorrerá e mostrará as raízes na tela.
Tá rodando liso e não aponta problemas, até na parte onde mostra o resultado. Por isso acho que o erro tá sendo na hora da conta, pq sempre me confundo com esse lance de parenteses e tals.
Testei com a = 4, b = 4, c = 1. Nesse caso o delta é 0 (isso o programa calcula correto) e também acerta que só há uma raíz, mas essa raíz é 0, sendo que o correto era dar -0,5, não?
Sei que o programa é bem clichê, mas queria fazer e se alguém souber como arrumar me ajudaria mt.