GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Equação do Segundo Grau em Java


#1

Pessoal! comecei a estudar java recentemente, e como todo bom curioso, tentei fazer alguns programinhas que eu tinha em pascal em java. o primeiro deles foi a resolução da equação de segundo grau, e aí vai o código pra quem quiser conferir:

import java.util.Scanner;[color=green]//Vamos utilizar a classe Scanner para ler os dados
[/color]
public class Equacao
{
public static void main ( String args[] )
{

	Scanner input = new Scanner(System.in);[color=green]//Definindo nossas variáveis[/color]

		double a;[color=green]//nosso A da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "a" é o 2.[/color]

		double b;[color=green]//nosso B da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "b" é o 3.[/color]

		double c;[color=green]//nosso C da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "c" é o -10.[/color]

		double delta;[color=green]//nosso Delta. Delta = "B" ao quadrado menos 4 vezes "A" vezes "C". Lembra?[/color]

		double x1;[color=green]//nossa primeira raiz da equação.[/color]

		double x2;[color=green]//nossa segunda raiz da equação.[/color]

	System.out.println("Escreva o valor de A:");[color=green]//mensagem[/color]

		a = input.nextDouble();[color=green]//leitura do "a"[/color]

	System.out.println("Escreva o valor de B:");[color=green]//mensagem[/color]

		b = input.nextDouble();[color=green]//leitura do "b"[/color]

	System.out.print("Escreva o valor de C:");[color=green]//mensagem[/color]

		c = input.nextDouble();[color=green]//leitura do "c"[/color]

		delta = ((b*b)-(4*a*c));[color=green]//calculando  o Delta[/color]

		x1 = 0;[color=green]//definindo um valor inicial para o x1[/color]

		x2 = 0;[color=green]//definindo um valor inicial para o x2[/color]

		if (delta >= 0)[color=green]//se o delta for maior ou igual a zero podemos resolver...  [/color]
			{
				x1 = (  ( -b + (Math.sqrt (delta) )  )  / ( 2*a ) );[color=green]//equação do x1[/color]

				x2 = (  ( -b + (Math.sqrt (delta) )  )  / ( 2*a ) );[color=green]//equação do x2[/color]

				System.out.printf("x1 vale: "+ x1);[color=green]//mostra o x1[/color]

				System.out.println("");[color=green]//deixa uma linha em branco[/color]

				System.out.printf("x2 vale: "+ x2);[color=green]//mostra o x2[/color]

				System.out.println("");[color=green]//deixa uma linha em branco[/color]

			}

		else[color=green]//senão(se o delta não for maior nem igual a zero) não podemos resolver...[/color]
			{
				System.out.println("Delta invalido");[color=green]//avisa que o delta é inválido[/color]
			}

[color=green]//By Elbe Miranda - elberalves@yahoo.com.br   ou  stevenbrother@hotmail.com[/color]

}
}


#2

Onde se lê

 x1 = ( ( -b + (Math.sqrt (delta) ) ) / ( 2*a ) );//equação do x1
x2 = ( ( -b + (Math.sqrt (delta) ) ) / ( 2*a ) );//equação do x2

deve ler-se

 x1 =  (-b + Math.sqrt (delta))  / ( 2*a );//equação do x1
x2 =   (-b - Math.sqrt (delta)) / ( 2*a ) ;//equação do x2

#3

Dois lembretes matemáticos:

1) Verifique se a=0. Caso isso ocorra, não se trata de uma equação do segundo grau, além do que você provavelmente receberá como resultado Infinity para o delta.
Obs.: Uma equação do segundo grau tem a forma ax2+bx+c=0, onde a<>0.

2) O fato do delta<0 não implica que ele seja inválido, significa simplesmente que não há soluções que possam ser expressas com o conjunto dos números reais. Já com os complexos...

Uma dica:
Estude a diferença entre printf e println. Adianto que no exemplo postado não há a menor necessidade de utilizar o primeiro.

Mas o caminho é esse mesmo, refazer os exemplos simples do passado é sempre um bom começo para conhecer a sintaxe da linguagem, mas estude bastante OO.

Boa sorte.


#4

Valeu pelas dicas galera....vou tentar melhorar o programa...quem sabe colocá-lo em modo gráfico.....
mas fico grato pela força.....


#5

Obrigado por ajudar com os programas que todo iniciante em java precisa para desenvolver raciocínio lógico .

Fiz o mesmo programa com interface gráfica usando Swing ok.
Coloquei um estrutura de repetição para o usuário não digitar zero no valor de A pois como nosso amigo disse se A for zero não é do segundo grau .

import javax.swing.JOptionPane;

public class Equacao2grau {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub

//Definindo variáveis

double a;//nosso A da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "a" é o 2.

double b;//nosso B da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "b" é o 3.

double c;//nosso C da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "c" é o -10.

double delta;//nosso Delta. Delta = "B" ao quadrado menos 4 vezes "A" vezes "C". Lembra?

double x1;//nossa primeira raiz da equação.

double x2;//nossa segunda raiz da equação.

a = Double.parseDouble(JOptionPane.showInputDialog("Escreva o valor de A:"));//Menssagem e leitura do "a"

while(a==0)//Enquanto o valor de A for igual a zero repete a mensagem e pede outro valor .
{
JOptionPane.showMessageDialog(null,"O valor de A não pode ser zero a equação é do 2º grau !\n Digite outro valor !");
a = Double.parseDouble(JOptionPane.showInputDialog("Escreva o valor de A:"));//Menssagem e leitura do "a"

}

b = Double.parseDouble(JOptionPane.showInputDialog("Escreva o valor de B:"));//Menssagem e leitura do "b"

c = Double.parseDouble(JOptionPane.showInputDialog("Escreva o valor de C:"));//Menssagem e leitura do "c"

delta = ((b*b)-(4*a*c));//Fórmula do Delta

x1 = 0;//Definindo um valor inicial para o x1

x2 = 0;//Definindo um valor inicial para o x2

if (delta >= 0)//Se o valor de delta for maior ou igual a zero podemos resolver...
{
x1 = (-b + Math.sqrt (delta)) / ( 2*a );//equação do x1

x2 =   (-b - Math.sqrt (delta)) / ( 2*a ) ;//equação do x2

JOptionPane.showMessageDialog(null,"Delta vale :"+delta); //Mostra o valor de Delta
JOptionPane.showMessageDialog(null,"\nx1 vale: "+ x1 + "\n x2 vale: "+ x2 );//mostra o x1 e x2.

}
else//senão(se o delta não for maior nem igual a zero) não podemos resolver com números reais talves com números complexos podemos...
{
JOptionPane.showMessageDialog(null,"Não há soluções que possam ser expressas com o conjunto dos números reais ");//avisa que o delta deu condição complexa
}

}
//Ricardo Estefânio : Programador Junior .

}


#6

A primeira parte está correta, ou seja, se "a" é igual a zero, a equação deixa de ser do segundo grau, mas isso não vai fazer o delta receber o valor "Infinity".

delta = b^2 - 4 * a * c.

Se a = 0 => delta = b^2

Nessas condições, delta = infinito se, e somente se, b = infinito, e isso não tem nada a ver com o fato de "a" ser zero.

Para os que estão fazendo o programa, podem fazer uma função que cálcula equações do primeiro grau que é chamada caso "a" seja igual a zero.


#7

Sem usar swing ficou mais ou menos desse jeito:

/* Escreva um programa para calcular as duas 
** raízes de uma equação de segundo grau,
** sendo dados os valores dos coeficientes 
** a, b e c. 
*/
public class Exerc210{
	public static void main (String[] args){
	Scanner scan = Scanner(System.in);
	double a;//nosso A da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "a" é o 2. 
	double b;//nosso B da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "b" é o 3. 
	double c;//nosso C da equação. Por exemplo: 2X+3Y-10=0, nesse caso o "c" é o -10. 
	double delta;//nosso Delta. Delta = "B" ao quadrado menos 4 vezes "A" vezes "C". Lembra? 
	double x1;//nossa primeira raiz da equação. 
	double x2;//nossa segunda raiz da equação. 
	System.out.println("Insira o valor de A: ");
	a = scan.nextDouble;
	//a = Double.parseDouble(JOptionPane.showInputDialog("Escreva o valor de A:"));//Menssagem e leitura do "a" 
	while(a==0){ //Enquanto o valor de A for igual a zero repete a mensagem e pede outro valor . 	
		System.out.println("O valor de A não pode ser zero a equação é do 2º grau !\n Digite outro valor !"); 
		System.out.println("Insira o valor de A: ");
		a = scan.nextDouble; //Menssagem e leitura do "a" 
	} 
	System.out.println("Insira o valor de B: ");
	b = scan.nextDouble;
	System.out.println("Insira o valor de C: ");
	c = scan.nextDouble;
	// b = Double.parseDouble(JOptionPane.showInputDialog("Escreva o valor de B:"));//Menssagem e leitura do "b" 
	// c = Double.parseDouble(JOptionPane.showInputDialog("Escreva o valor de C:"));//Menssagem e leitura do "c" 
	delta = ((b*b)-(4*a*c));//Fórmula do Delta 
	x1 = 0;//Definindo um valor inicial para o x1 
	x2 = 0;//Definindo um valor inicial para o x2 
	if (delta >= 0){ //Se o valor de delta for maior ou igual a zero podemos resolver... 
		x1 = (-b + Math.sqrt (delta)) / ( 2*a );//equação do x1 
		x2 = (-b - Math.sqrt (delta)) / ( 2*a ) ;//equação do x2 
		System.out.println("Delta vale :"+ delta); //Mostra o valor de Delta 
		System.out.println("\nx1 vale: "+ x1 + "\n x2 vale: "+ x2); //mostra o x1 e x2. 
	} 
	else{ //senão(se o delta não for maior nem igual a zero) não podemos resolver com números reais talves com números complexos podemos... 
		System.out.println("Não há soluções que possam ser expressas com o conjunto dos números reais ");//avisa que o delta deu condição complexa 
	} 
}

#8