Efetuando calculo errado
//nesse código a var XV exibe sempre resultado errado no teste, tipo se o resultado real for 0.5 vai aparecer 0.0. segue o código abaixo
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");
}
}
}
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
Curtidas 0
Respostas
Flávio Henr4ique
19/10/2013
Amigo, Ana;isei seu código e não achei nada de errado. Executei o código e os resultados estão todos corretos. Qual foram os dados de entrada que você está colocando ?
GOSTEI 0
Eliseu Mendes
19/10/2013
a = 1
b = -1
c = -20
em XV deveria resultar = 0.5
mas aqui no meu resulta sempre em = 0.0
b = -1
c = -20
em XV deveria resultar = 0.5
mas aqui no meu resulta sempre em = 0.0
GOSTEI 0
Flávio Henr4ique
19/10/2013
Ok Amigo Descobri o Erro. É um problema bem simples. O Erro é o seguinte, o tipo de dados das variáveis de entrada você tinha colocado com inteiro e o compilador do java se comporta assim:
-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.
-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
Flávio Henr4ique
19/10/2013
Ou Se você quiser manter os dados de entrada como int e o resultado com double você pode fazer uma conversão. É simples, basta no calculo forçar ele para double. O Seu Código ficaria assim .
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
Eliseu Mendes
19/10/2013
VALEW .KARA... TUDO OK AGORA!!
GOSTEI 0