Fórum Efetuando calculo errado #458885
19/10/2013
0
import java.util.Scanner;
public class equacao
{
public static void main (String Arg[])
{
Scanner input = new Scanner (System.in);
int a,b,c;
double x1,x2,xv,yv;
double rDelta,delta;
System.out.println ("!!!Calculo de equacao de 2º grau!!!");
System.out.print ("Valor de a:");
a = input.nextInt();
System.out.print ("Valor de b:");
b = input.nextInt();
System.out.print ("Valor de c:");
c = input.nextInt();
delta = Math.pow(b, 2) - (4*a*c); //math.pow is potencia
if (delta >= 0 && a != 0)
{
x1 = ((b*-1) + Math.sqrt(delta))/(2*a);
x2 = ((b*-1) - Math.sqrt(delta))/(2*a);//math.sqrt is raiz
xv = (-1)*b/(2*a); // problema no resultado aqui
yv = (delta*-1)/(4*a);
System.out.print ("Valor de x1:");
System.out.println (x1);
System.out.print ("Valor de x2:");
System.out.println (x2);
System.out.print ("Valor de xv:");
System.out.println (xv);
System.out.print ("Valor de yv:");
System.out.println (yv);
}
else
{
System.out.print ("A raiz não possui solução");
}
}
}
Eliseu Mendes
Curtir tópico
+ 0Posts
19/10/2013
Flávio Henr4ique
Gostei + 0
19/10/2013
Eliseu Mendes
b = -1
c = -20
em XV deveria resultar = 0.5
mas aqui no meu resulta sempre em = 0.0
Gostei + 0
19/10/2013
Flávio Henr4ique
-1 x -1 = 1
2 x 1 = 2
1/2 = 0
depois de terminar o calculo ele vai jogar para double ficando 0.0
para solucionar esse problema coloquei todas as variaveis para double. O compilador se comporta assim :
-1.0 x -1.0 = 1.0
2.0 x 1.0 = 2.0
1.0/2.0 = 0.5
Assim o resultado sai correto já que ele trata toda a conta como doble.
O Código fica assim.
package br.exemplo.devmedia;
import java.util.Scanner;
public class SegundoGrau
{
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
double x1,x2,xv,yv,a,b,c;
double rDelta,delta;
System.out.println ("!!!Calculo de equacao de 2º grau!!!");
System.out.print ("Valor de a:");
a = input.nextDouble();
System.out.print ("Valor de b:");
b = input.nextDouble();
System.out.print ("Valor de c:");
c = input.nextDouble();
delta = Math.pow(b, 2) - (4*a*c); //math.pow is potencia
if (delta >= 0 && a != 0)
{
x1 = ((b*-1) + Math.sqrt(delta))/(2*a);
x2 = ((b*-1) - Math.sqrt(delta))/(2*a);//math.sqrt is raiz
xv = (-1*b)/(2*a); // problema no resultado aqui
yv = (delta*-1)/(4*a);
System.out.print ("Valor de x1:");
System.out.println (x1);
System.out.print ("Valor de x2:");
System.out.println (x2);
System.out.print ("Valor de xv:");
System.out.println (xv);
System.out.print ("Valor de yv:");
System.out.println (yv);
}
else
{
System.out.print ("A raiz não possui solução");
}
}
}
Gostei + 0
19/10/2013
Flávio Henr4ique
package br.exemplo.devmedia;
import java.util.Scanner;
public class SegundoGrau
{
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
int a,b,c;
double x1,x2,xv,yv;
double rDelta,delta;
System.out.println ("!!!Calculo de equacao de 2º grau!!!");
System.out.print ("Valor de a:");
a = input.nextInt();
System.out.print ("Valor de b:");
b = input.nextInt();
System.out.print ("Valor de c:");
c = input.nextInt();
delta = Math.pow(b, 2) - (4*a*c); //math.pow is potencia
if (delta >= 0 && a != 0)
{
x1 = ((b*-1) + Math.sqrt(delta))/(2*a);
x2 = ((b*-1) - Math.sqrt(delta))/(2*a);//math.sqrt is raiz
xv = (double) (-1*b)/(2*a) ; // Assim força a conta para double. Basta Colocar (double) e a conta é forçada para double. Assim os dados de entrada continual Int .
yv = (delta*-1)/(4*a);
System.out.print ("Valor de x1:");
System.out.println (x1);
System.out.print ("Valor de x2:");
System.out.println (x2);
System.out.print ("Valor de xv:");
System.out.println (xv);
System.out.print ("Valor de yv:");
System.out.println (yv);
}
else
{
System.out.print ("A raiz não possui solução");
}
}
}
Gostei + 0
19/10/2013
Eliseu Mendes
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)