| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 11:47:29
|
olivercld
JavaGuru
![[Avatar]](/images/avatar/4c0cfccb27e35add2496d092995557ae.png)
Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline
|
Bom dia, bom fazendo este algoritmo aqui para efetue o cálculo das raízes da equação de báscara obtive este resultado no algoritmo de forma simples, alguem poderia analizar e dizer com suas palavras se tem algo errado se poderia estar fazendo de forma diferente ? e me passar uma explicaçao mais formal que a minha caso esteja errado.
This message was edited 1 time. Last update was at 15/10/2011 14:02:27
|
Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 11:56:54
|
gomesrod
GUJ Ranger
![[Avatar]](/images/avatar/5de6755473dc988fe6c7db81f26a53ac.jpg)
Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline
|
No cálculo mesmo só tem um probleminha, x1 e x2 estão iguais.
deveria ser:
x1 = (float) ((-b + Math.sqrt(delta)) / (2 * a));
x2 = (float) ((-b - Math.sqrt(delta)) / (2 * a));
Fora isso, nao é preciso instanciar um novo Scanner a cada valor lido. É só instanciar uma vez e ir chamando o nextFloat.
Ou melhor ainda, chamar o nextLine() , que retorna a linha digitada até o "enter". Vem como string, e aí vc converte para Float. Dessa forma se tem mais controle sobre os dados em formato incorreto.
EDIT:
Ah, também esqueci de mencionar outro erro no cálculo: delta pode ser igual a zero também, só não pode ser negativo. Nesse caso as duas raizes serão iguais, pois sqrt(delta) é igual a zero.
This message was edited 1 time. Last update was at 14/10/2011 11:58:35
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 13:51:19
|
olivercld
JavaGuru
![[Avatar]](/images/avatar/4c0cfccb27e35add2496d092995557ae.png)
Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline
|
tinha esquecido essa questão :
x1 = (float) ((-b + Math.sqrt(delta)) / (2 * a)); // soma
x2 = (float) ((-b - Math.sqrt(delta)) / (2 * a)); // subtrai
Ah, também esqueci de mencionar outro erro no cálculo: delta pode ser igual a zero também, só não pode ser negativo. Nesse caso as duas raizes serão iguais, pois sqrt(delta) é igual a zero.
essa questao estava se referindo porque faltou o >=, if (delta >= 0) .
Só nao entendi o que disse aqui sobre:
Fora isso, nao é preciso instanciar um novo Scanner a cada valor lido. É só instanciar uma vez e ir chamando o nextFloat.
Ou melhor ainda, chamar o nextLine() , que retorna a linha digitada até o "enter". Vem como string, e aí vc converte para Float.
quis referir desta forma:
|
Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 14:26:34
|
gomesrod
GUJ Ranger
![[Avatar]](/images/avatar/5de6755473dc988fe6c7db81f26a53ac.jpg)
Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline
|
O que eu quis dizer é que não precisa ficar criando outro Scanner para cada input. Assim:
Igual, só que aproveitando o mesmo scanner. Ele não é um objeto descartável, utilize o mesmo enquanto houver algo para ler. Também troquei o println por print só para ficar mais bonitinho, assim os dados são digitados na mesma linha da pergunta.
Sobre usar o nextLine(), deixa pra lá por enquanto, era frescura minha rsrs
Era para permitir um tratamento caso o usuário digite dados incorretos (vc já viu o que acontece? Estoura uma InputMismatchException, bem pouco amigável), mas dá para fazer um tratamento simples assim mesmo, basta colocar um try/catch:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 14:34:32
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
Se "a" for igual a zero você não tem uma equação do segundo grau.
Ah, outra coisa. É método ou fórmula de Bhaskara, não equação de Bhaskara. A equação é do segundo grau ou equação quadrática.
[]'s
This message was edited 2 times. Last update was at 14/10/2011 14:37:28
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 14:46:23
|
olivercld
JavaGuru
![[Avatar]](/images/avatar/4c0cfccb27e35add2496d092995557ae.png)
Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline
|
ok entendido gomesrod sobre a questao que voçe disse agora, sobre try e catch, eu so nao sabia usa-la valeu pela explicação.
nao entendi davidbuzatto
Se "a" for igual a zero você não tem uma equação do segundo grau.
Ah, outra coisa. É método ou fórmula de Bhaskara, não equação de Bhaskara. A equação é do segundo grau ou equação quadrática.
fiz de acordo com enunciado veja:
Desenvolva um algoritmo que leia 3 valores inteiros e efetue o cálculo das
raízes da equação de báscara. Se não foi possível calcular as raízes, mostre
uma mensagem correspondente. Obs.: não é possível divisão por 0 (zero) e raiz
quadrada de número negativo;
pelo jeito aqui e formula para calcular e é uma equação do 2º.
|
Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 15:28:33
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
olivercld wrote:nao entendi davidbuzatto
Se "a" for igual a zero você não tem uma equação do segundo grau.
Ah, outra coisa. É método ou fórmula de Bhaskara, não equação de Bhaskara. A equação é do segundo grau ou equação quadrática.
fiz de acordo com enunciado veja:
Desenvolva um algoritmo que leia 3 valores inteiros e efetue o cálculo das
raízes da equação de báscara. Se não foi possível calcular as raízes, mostre
uma mensagem correspondente. Obs.: não é possível divisão por 0 (zero) e raiz
quadrada de número negativo;
pelo jeito aqui e formula para calcular e é uma equação do 2º.
Rode seu programa, digite 0 quando o programa pedir o valor para a e veja o que acontece. Aí você entenderá o que o davidbuzatto quis dizer.
Para que a equação do tipo ax² + bx + c = 0 seja do segundo grau, o valor de a deve ser maior que zero. Seu programa deve testar essa condição.
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 16:01:07
|
olivercld
JavaGuru
![[Avatar]](/images/avatar/4c0cfccb27e35add2496d092995557ae.png)
Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline
|
tnaires fiz como me disse, nao sei se e desta forma, tirei o try e catch
so nao sei como fazer ao invez de encerrar voltar ´para digitar o valor de A novamente
é dessa forma ou não ?
|
Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 18:51:17
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
tnaires wrote:Para que a equação do tipo ax² + bx + c = 0 seja do segundo grau, o valor de a deve ser maior que zero. Seu programa deve testar essa condição.
O coeficiente "a" deve ser diferente de 0.
Não pode ser zero pois se a = 0, então tem-se:
0x² + bx + c = 0 =>
bx + c = 0 (equação do primeiro grau).
Se aplicarmos o método de Bhaskara para a = 0, temos uma divisão por zero.
[]'s
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 19:20:45
|
olivercld
JavaGuru
![[Avatar]](/images/avatar/4c0cfccb27e35add2496d092995557ae.png)
Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline
|
entendido so equação do 2º se for assim ax² + bx + c = 0 , bom davidbuzatto então eu posso deixar dessa forma: assim ela quando digito 0 para A nao aceita.
só lembrando não e trabalho não e só para praticar mesmo agradeço a grande ajuda que vocês estão dando.
|
Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 22:54:15
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
davidbuzatto wrote:
tnaires wrote:Para que a equação do tipo ax² + bx + c = 0 seja do segundo grau, o valor de a deve ser maior que zero. Seu programa deve testar essa condição.
O coeficiente "a" deve ser diferente de 0.
Não pode ser zero pois se a = 0, então tem-se:
0x² + bx + c = 0 =>
bx + c = 0 (equação do primeiro grau).
Se aplicarmos o método de Bhaskara para a = 0, temos uma divisão por zero.
[]'s
Isso, cometi um engano Quis dizer diferente de zero, mas não vou editar o meu post
This message was edited 1 time. Last update was at 14/10/2011 22:55:02
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/10/2011 14:01:42
|
olivercld
JavaGuru
![[Avatar]](/images/avatar/4c0cfccb27e35add2496d092995557ae.png)
Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline
|
Obrigado a vocês...
|
Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV |
|
|
 |
|
|