Daew galera, sou novato aqui, assim como no java, to ainda dando meus primeiros passos. Hoje escrevi um programinha bem simples pra calcular formulas bhaskara segue ele aki
import java.util.Scanner;
public class Bhaskara
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int a;
int b;
int c;
double xMenosRaiz;
double xMaisRaiz;
System.out.print ("usando este sistema você ira encontrar o 'x' da formula de Bhaskara\n");
System.out.print ("a=x², b=x, c=numero sem variavel\n\n");
System.out.print ("Insira o elemento a: ");
a = input.nextInt();
System.out.print ("Insira o elemento b: ");
b = input.nextInt();
System.out.print ("Insira o elemento c: ");
c = input.nextInt();
xMenosRaiz = (-b +Math.sqrt (Math.pow (b,2) - 4*a*c))/2*a;
xMaisRaiz = (-b -Math.sqrt (Math.pow (b,2) - 4*a*c))/2*a;
System.out.printf ("S={%.0f, %.0f}", xMenosRaiz, xMaisRaiz );
}
}
Ele ta calculando certinha ate onde eu testei ele, porem quando é inserido alguma formula que o resultado seja uma fração ele remete a um resultado diferente por exemplo a seguinte fração
h(x)=10x²-29+10 o resultado deveria ser s{5/2, 2,5}, porem ele remete S{250,40}
Gostaria de saber como corigir isto, se tem como deixar o numero em fração ou ele dar a divisão correta ja que 5/2 = 2,5 e nao 250.
Valeu
[quote=drsmachado]Algumas alterações e utilizando as regras do fórum
import java.util.Scanner;
public class Bhaskara {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double a;
double b;
double c;
double xMenosRaiz = 0d;
double xMaisRaiz = 0d;
System.out
.print("usando este sistema você ira encontrar o 'x' da formula de Bhaskara\n");
System.out.print("a=x², b=x, c=numero sem variavel\n\n");
System.out.print("Insira o elemento a: ");
a = input.nextInt();
System.out.print("Insira o elemento b: ");
b = input.nextInt();
System.out.print("Insira o elemento c: ");
c = input.nextInt();
System.out.println("Calculando " + a + "x² + (" + b + ")x + (" + c + ") = 0");
double var1 = (-b + Math.sqrt(Math.pow(b, 2) - 4 * a * c));
double var2 = (-b - Math.sqrt(Math.pow(b, 2) - 4 * a * c));
double dois = 2 * a;
double sobra1 = var1 % dois;
double sobra2 = var2 % dois;
if (sobra1 == 0) {
xMenosRaiz = (var1) / dois;
System.out.println("X1 = " + xMenosRaiz);
} else {
System.out.println("X1 = " + var1 + "/" + dois);
}
if (sobra2 == 0) {
xMaisRaiz = (var2) / dois;
System.out.println("X2 = " + xMaisRaiz);
} else {
System.out.println("X2 = " + var2 + "/" + dois);
}
}
}
Detalhe, sempre que uma equação tiver como resposta uma fração, deve-se verificar se ambos os operandos podem ser divididos por algum divisor comum
x2 = 4.0/6.0
//como 4 e 6 são divisíveis por 2
//e
//4 / 2 = 2
//6 / 2 = 3
x2 = 2.0/3.0
E a saída
Insira o elemento a: -3
Insira o elemento b: 2
Insira o elemento c: 1
Calculando -3.0x² + (2.0)x + (1.0) = 0
X1 = 2.0/-6.0
X2 = 1.0
[/quote]
Vo da uma olhada nisso, quem sabe implementar o codigo, mas você disse que deve-se verificar sempre se uma fação tem um divisor comum, ate poderia ser, mas deve ter um resultado mesmo nao tendo divisores comuns. Queria que pelo menos se ele nao pudesse mostrar em fração que desse o resultado exato da divisão.
Outra coisa que poderia tentar fazer é: fazer o programa verificar se o resultado for inteiro, se nao for inteiro ele deixaria em forma de divisao mesmo, por exemplo se ao inves de ele tentar dividir 5/2 e retornar o resultado 2,5, ele simplesmente deixasse como 5/2
//faz isso ae que da
Scanner input = new Scanner(System.in);
double a;
double b;
double c;
double xMenosRaiz;
double xMaisRaiz;
System.out
.print("usando este sistema você ira encontrar o 'x' da formula de Bhaskara\n");
System.out.print("a=x², b=x, c=numero sem variavel\n\n");
System.out.print("Insira o elemento a: ");
a = input.nextInt();
System.out.print("Insira o elemento b: ");
b = input.nextInt();
System.out.print("Insira o elemento c: ");
c = input.nextInt();
xMenosRaiz = (-b + Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
xMaisRaiz = (-b - Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
System.out.println(xMaisRaiz);
System.out.println(xMenosRaiz);
[quote=wesllhey]o problema era sua System.out.printf("S={%.0f, %.0f}", xMenosRaiz, xMaisRaiz);
^^mals por n ter avizado[/quote]
Nops cara nao deu nao, a divisao de 5/2 continua dando 250 e a divisao de 2/5 continua dando 40. So para constar to usando o termo a=10 b=-29 c=10 o resultado seria S{5/2, 2/5}
kra copia e cola [code]public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int a;
int b;
int c;
double xMenosRaiz;
double xMaisRaiz;
System.out
.print("usando este sistema você ira encontrar o 'x' da formula de Bhaskara\n");
System.out.print("a=x², b=x, c=numero sem variavel\n\n");
System.out.print("Insira o elemento a: ");
a = input.nextInt();
System.out.print("Insira o elemento b: ");
b = input.nextInt();
System.out.print("Insira o elemento c: ");
c = input.nextInt();
xMenosRaiz = (-b + Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
xMaisRaiz = (-b - Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
System.out.println(xMenosRaiz);
System.out.println(xMaisRaiz);
}[/code]
[quote=wesllhey]kra copia e cola [code]public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int a;
int b;
int c;
double xMenosRaiz;
double xMaisRaiz;
System.out
.print("usando este sistema você ira encontrar o 'x' da formula de Bhaskara\n");
System.out.print("a=x², b=x, c=numero sem variavel\n\n");
System.out.print("Insira o elemento a: ");
a = input.nextInt();
System.out.print("Insira o elemento b: ");
b = input.nextInt();
System.out.print("Insira o elemento c: ");
c = input.nextInt();
xMenosRaiz = (-b + Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
xMaisRaiz = (-b - Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
System.out.println(xMenosRaiz);
System.out.println(xMaisRaiz);
}[/code]
coloca 10 29 10 e vai dar -0.4 -2.5[/quote]
Cara agora deu certo, ta dividindo tranquilo, e antes eu tinha tambem copiado e colado e nao dava… Mas agora ta tudo certo obrigadão ai cara
[quote=Koala]Vo da uma olhada nisso, quem sabe implementar o codigo, mas você disse que deve-se verificar sempre se uma fação tem um divisor comum, ate poderia ser, mas deve ter um resultado mesmo nao tendo divisores comuns. Queria que pelo menos se ele nao pudesse mostrar em fração que desse o resultado exato da divisão.
Outra coisa que poderia tentar fazer é: fazer o programa verificar se o resultado for inteiro, se nao for inteiro ele deixaria em forma de divisao mesmo, por exemplo se ao inves de ele tentar dividir 5/2 e retornar o resultado 2,5, ele simplesmente deixasse como 5/2[/quote]
Você nem tentou rodar o código, pelo visto.
Segundo, o comentário é apenas uma curiosidade.
Em vários concursos e vestibas, onde as questões são múltipla escolha, sempre tem aquela que mostra o resultado simplificado (esse processo de ir dividindo até chegarmos a fatores indivisíveis por denominadores comuns). Você pode ignorar (afinal, não sei se vale o tempo para implementar isso).