Cansado de Fazer o Calculo do baskara?
Aew gente.. blz?
Meu nome é victor , to entrando pra comunidade Java pq sempre me interessei por computaçao desde criança , pretendo fazer Engenharia da Computaçao .. estou no 1 ano colegial .. ai decidi fazer um programinha besta so pra começar.. ^^ espero q vcs gostem..
Esse programa resolve o baskara .. dando o X1 e o X2 como respostas ^^
/* Programa criado por Victor Casé * Todos os direitos reservados 1990-2006 */ // Importa a Extenção Swing import javax.swing.* ; public class Baskara { //Inicializaçao das variaveis public static void main ( String args [] ) { String varA, varB, varC; double numberA, numberB, numberC, delta, x1, x2; varA = JOptionPane.showInputDialog ("Digite o A da questão"); varB = JOptionPane.showInputDialog ("Digite o B da questão"); varC = JOptionPane.showInputDialog ("Digite o C da questão"); numberA = Integer.parseInt (varA); numberB = Integer.parseInt (varB); numberC = Integer.parseInt (varC); // Faz os calculos necessarios delta = (numberB*numberB)-4*(numberA)*(numberC); x1 = -numberB + Math.sqrt(delta) / 2*numberA; x2 = -numberB - Math.sqrt(delta) / 2*numberA; // Mostra os Resultados obtidos JOptionPane.showMessageDialog ( null , "O x1 da questão será " + x1 , " Resultado ", JOptionPane.PLAIN_MESSAGE); JOptionPane.showMessageDialog ( null , "O x2 da questão será " + x2 , " Resultado ", JOptionPane.PLAIN_MESSAGE); System.exit(0); } }
Victor Casé
Curtidas 0
Respostas
Victor Muniz
09/04/2009
gostei do topico
GOSTEI 0
Diogo Souza
09/04/2009
Cara, vc ta no primeiro ano do ensino medio??
se for, tu já ta bem adiantado...
Investe na carreira!!
ah, o programa tbm ficou legal!!
GOSTEI 0
Ricardo Staroski
09/04/2009
Parabéns pela iniciativa em aprender Java.
Como incentivo, vou postar uma versão orientada a objetos do seu exemplo.
Estude, analise e pratique.
Boa sorte!
public final class Baskara { public final double X1; public final double X2; public Baskara(double a, double b, double c) { double delta = (b * b) - (4 * a * c); X1 = (-b + Math.sqrt(delta)) / (2 * a); X2 = (-b - Math.sqrt(delta)) / (2 * a); } }
import javax.swing.*; public class TesteBaskara { public static void main(String args[]) { double a = Double.parseDouble(JOptionPane.showInputDialog("Digite o A da questão")); double b = Double.parseDouble(JOptionPane.showInputDialog("Digite o B da questão")); double c = Double.parseDouble(JOptionPane.showInputDialog("Digite o C da questão")); Baskara baskara = new Baskara(a, b, c); JOptionPane.showMessageDialog(null, "O x1 da questão será " + baskara.X1 + "\n" + "O x2 da questão será " + baskara.X2, " Resultado ", JOptionPane.PLAIN_MESSAGE); System.exit(0); } }
GOSTEI 0
Alison Souza
09/04/2009
Isso foi um incentivo ou tu quiz assustar o garoto?
hehehe
Att,
Alison
GOSTEI 0
Alison Souza
09/04/2009
Só uma correção,
no lugar de final coloca static
:)
GOSTEI 0
Diogo Souza
09/04/2009
As variaveis x1 e x2 tbm poderiam ser private (adicionando os respectivos getters e setters) para deixar o codigo mais seguro, mas como é umma aplicaçao pequena nao ha mal nenhum em deixa-las public, mto menos final.
:smile: :grin: :D
GOSTEI 0
Ricardo Staroski
09/04/2009
[quote="Alison.souza"]Só uma correção, no lugar de final coloca static
ERRADO!
[b]X1[/b] e [b]X2[/b] não são [b]static[/b] pois estão associadas aos [b]objetos[/b] da classe Baskara
Elas realmente são [b]final[/b] e [b]public[/b]!
Trata-se de duas [b]constantes dinâmicas[/b] inicializadas dentro do construtor.
Não faz sentido ter [b]getters[/b] para elas muito menos [b]setters[/b].
Uma vez criado um objeto da classe Baskara, esses atributos não vão mudar para aquele objeto.
GOSTEI 0
Alison Souza
09/04/2009
Uma vez que se declara uma variavel final ela não pode ser modificada, certo?
X1 = (-b + Math.sqrt(delta)) / (2 * a);
X2 = (-b - Math.sqrt(delta)) / (2 * a);
X1 e X2, mesmo sendo final recebem o valor da operação?
Att,
Alison
GOSTEI 0
Ricardo Staroski
09/04/2009
[quote="Alison.souza"]Uma vez que se declara uma variavel final ela não pode ser modificada, certo?
Quase isso, uma variável [b]final[/b] precisa ser inicializada em algum momento, mas não necessariamente na sua declaração.
Mas depois que ela foi inicializada, aí ela não pode ser modificada.
Por isso o termo [b]constante dinâmica[/b], a variável vai ter um valor constante porém esse valor pode ser dinâmico, como no exemplo acima, onde X1 e X2 recebem o resultado de uma equação.
Mais exemplos:
public class Constantes { // constante estática inicializada na declaração static final int CONSTANTE_1 = 1; // constante estática dinâmica, inicializada no bloco de inicialização da classe static final int CONSTANTE_2; // bloco de inicialização da classe static { // o conteúdo dela é dinamico... CONSTANTE_2 = (int) (Math.random() * 100); } // constante não-estática inicializada na declaracao final int CONSTANTE_3 = 3; // constante não-estática inicializada no bloco de inicialização do objeto final int CONSTANTE_4; // constante não-estática inicializada no construtor da classe final int CONSTANTE_5; // bloco de inicialização do objeto { // poderia ser outro valor obtido dinamicamente CONSTANTE_4 = 4; } // construtor public Constantes() { // poderia ser outro valor obtido dinamicamente // por exemplo via parametro do construtor CONSTANTE_5 = 5; } }
GOSTEI 0
Diogo Souza
09/04/2009
Como diriam nossos velhos conhecidos Sierra & Berts, "todas" as variaveis deveriam seguir uma onda, q eu particularmente tbm considero nao mto boa, de serem declaradas como privadas...
As convençoes existem e sempre vao existir...
GOSTEI 0
Marcos Silva
09/04/2009
Fiz de outra forma como exercício em aula talvez vocês gostem!!!
import javax.swing.*;
public class Bascara {
private double a, b, c;
private double delta;
public void setA(double vA){
this.a=vA;
}
public double getA(){
return this.a;
}
public void setB(double vB){
this.b=vB;
}
public double getB(){
return this.b;
}
public void setC(double vC){
this.c=vC;
}
public double getC(){
return this.c;
}
public void setDelta(double vDelta){
this.delta=vDelta;
}
public double getDelta(){
return this.delta;
}
public double retornaDelta(double va, double vb, double vc){
double vdelta;
vdelta =((vb*vb)-4*va*vc);
return vdelta;
}
public void imprimeRaiz(double a,double b,double delta){
double X1 = (-b + Math.sqrt(delta)) / (2 * a);
double X2 = (-b - Math.sqrt(delta)) / (2 * a);
System.out.println("Raiz positiva: "+ X1+"\nRaiz negativa: "+ X2+"\n");
JOptionPane.showMessageDialog(null,"Raiz positiva: "+ X1+"\nRaiz negativa: "+ X2);
}
public static void main(String args[]) {
Bascara d1 = new Bascara();
double a,b,c,delta;
a=Double.parseDouble(JOptionPane.showInputDialog("Digite a"));
b=Double.parseDouble(JOptionPane.showInputDialog("Digite b"));
c=Double.parseDouble(JOptionPane.showInputDialog("Digite c"));
System.out.println("A: "+a+"\nB: "+b+"\nC: "+c+"\n");
delta=d1.retornaDelta(a,b,c);
System.out.print("Delta: " + delta +"\n");
d1.imprimeRaiz(a,b,delta);
}
}
//sei que set's e get's eram desnecessários mais era pra entregar achei melhor coloca-los também
!!!
X-)
GOSTEI 0
Ricardo Staroski
09/04/2009
Fórmula de Baskara orientada a objetos:
Adaptando seu código para utilizar a classe acima:
public final class Baskara { public final double x1; public final double x2; public Baskara(double a, double b, double c) { double delta = (b * b) - (4 * a * c); x1 = (-b + Math.sqrt(delta)) / (2 * a); x2 = (-b - Math.sqrt(delta)) / (2 * a); } }
public static void main(String args[]) { double a = Double.parseDouble(JOptionPane.showInputDialog("Digite a")); double b = Double.parseDouble(JOptionPane.showInputDialog("Digite b")); double c = Double.parseDouble(JOptionPane.showInputDialog("Digite c")); System.out.println("A: " + a + "\nB: " + b + "\nC: " + c); Baskara baskara = new Baskara(a, b, c); System.out.println("x1: " + baskara.x1); System.out.println("x2: " + baskara.x2); }
GOSTEI 0
Marcos Silva
09/04/2009
no caso é que o escopo pedia que eu usasse o métodos como retornaDelta e o método imprimeRaiz por isso o código não está otimizado...
valew!!!
GOSTEI 0
Estevan Belinello
09/04/2009
Quando eu executo, na hora de mostrar os valores de x1 e x2 ele mostra NaN. Alguém sabe como posso resolver isso?
Grato
Estevan
GOSTEI 0
Marcos Silva
09/04/2009
[quote="estevandlbs"]Quando eu executo, na hora de mostrar os valores de x1 e x2 ele mostra NaN. Alguém sabe como posso resolver isso?
Grato
Estevan
Provavelmente delta está sendo negativo, portanto não existe solução real para a equação.
Solução:
testar o valor de x1 e x2 ([color=green]Double [/color]tem um método isNaN);
ou testar se delta é negativo e, numa variável adicional [color=blue]boolean[/color], marcar o fato de não ter solução real
GOSTEI 0
Cdescovi
09/04/2009
Pessoal, sou iniciante em java, e tenho um trabalho a fazer, preciso da ajuda de vocês. A partir daqui:
Crie um programa em Java que use a fórmula de bhaskara para calcular as
raízes de uma equação do 2º grau.(Essa parte eu consigo fazer, o que me complica é o seguinte):
O programa deve fazer a análise do delta para chegar à solução.
se o delta for maior do que zero, existem duas raízes reias (x1 e x2);
se o delta for igual a zero, existem duas raízes reais e iguais (x1= x2);
se o delta for menor do que zero, raízes imaginárias;
O algoritmo deve calcular os resultados, de acordo com a análise do delta, e
apresentar os valores. Somente no caso do delta menor do que zero, o programa
deverá enviar uma mensagem “Raízes Imaginárias”.
Dica: double r, x = 9; r = Math.sqrt(x);
Desde já, Obrigado!
GOSTEI 0
Marcos Silva
09/04/2009
[quote="killua"]Pessoal, sou iniciante em java, e tenho um trabalho a fazer, preciso da ajuda de vocês. A partir daqui:
Crie um programa em Java que use a fórmula de bhaskara para calcular as
raízes de uma equação do 2º grau.(Essa parte eu consigo fazer, o que me complica é o seguinte):
O programa deve fazer a análise do delta para chegar à solução.
se o delta for maior do que zero, existem duas raízes reias (x1 e x2);
se o delta for igual a zero, existem duas raízes reais e iguais (x1= x2);
se o delta for menor do que zero, raízes imaginárias;
O algoritmo deve calcular os resultados, de acordo com a análise do delta, e
apresentar os valores. Somente no caso do delta menor do que zero, o programa
deverá enviar uma mensagem ?Raízes Imaginárias?.
Dica: double r, x = 9; r = Math.sqrt(x);
Desde já, Obrigado!
Você usou os exemplos acima?
Copie os códigos e modifique-os com alguns IF's para chegar no que vocÊ quer.
GOSTEI 0
Cdescovi
09/04/2009
Obrigado! Mas ja consegui fazer.
GOSTEI 0