Eu estou com um exercício em mãos e não consigo resolve-lo, alguém pode me ajudar? É o seguinte:
(Números complexos) Crie uma classe chamada Complex para realizar aritmética com números complexos. Os números complexos têm a forma: parteReal + parteImaginaria * i
onde i é raiz quadrada de -1
Escreva um programa para testar sua classe. Utilize variáveis de ponto flutuantes para representar os dados private da classe. Forneça um construtor que permita um objeto dessa classe seja inicializado quando ele for declarado. Forneça um construtor sem argumento com valores-padrão caso nenhum inicializador seja fornecido. Forneça métodos public que realizam as seguintes operações:
a) Somar dois números Complex: as partes reais somadas de um lado e as partes imaginárias são somadas de outro.
b) Subtrair dois números Complex: A parte real do operando direito é subtraida da parte real do operando esquerdo e a parte imaginaria do operando direito é subtraida da parte imaginaria do operendo esquerdo.
c) Imprimir números Complex na forma (a,b), onde a é a parte real e b a parte imaginaria.
[quote=fernando.rj021]
Esse exercicio é do livro Java Como Programar, do Deitel.
O problema é entender a matemática do exercicio e no livro não tem nada de matematica, ele ja deve partir do pressuposto que vc sabe matematica.[/quote]
[quote=Anime][quote=fernando.rj021]
Esse exercicio é do livro Java Como Programar, do Deitel.
O problema é entender a matemática do exercicio e no livro não tem nada de matematica, ele ja deve partir do pressuposto que vc sabe matematica.[/quote]
Concordo que é simples, mas você não obedeceu ao espírito do enunciado, e provavelmente teria a nota reduzida se o seu professor fosse muito rigoroso. Usualmente você resolveria esse problema assim:
a) A classe Complex tem apenas e tão somente 2 variáveis de instância, não 4. Em matemática, quem teria 4 variáveis de instância são os “quatérnions”.
b) Um exemplo muito, muito simplificado da resolução do seu problema:
/**
* Representa um numero complexo e as operações de soma e sub
*/
public class Complex {
// utilize variaveis de ponto flutuante para representar os dados private da classe
private double a;
private double b;
// forneca um construtor que permita que um objeto seja inicializado quando for declarado
public Complex (double a, double b) {
this.a = a; this.b = b;
}
// forneca um construtor sem argumentos com valores padrao caso nenhum inicializador seja fornecido
public Complex () {
this.a = 0.0; this.b = 0.0;
}
// forneca um metodo para somar 2 numeros Complex
public static Complex somar (Complex x, Complex y) {
return new Complex (x.a + y.a, x.b + y.b);
}
// forneca um metodo para subtrair 2 numeros Complex
public static Complex subtrair (Complex x, Complex y) {
return new Complex (x.a - y.a, x.b - y.b);
}
// forneca um metodo para imprimir numeros Complex na forma (a,b)
public String toString() {
return "(" + a + ", " + b + ")";
}
}
class TesteComplex {
public static void main (String[] args) {
Complex abc = new Complex (4.5, 6.7);
Complex def = new Complex (7.8, -9.1);
Complex zero = new Complex();
System.out.println (abc); // imprime o numero (4.5, 6.7)
System.out.println (def); // imprime o numero (7.8, -9.1)
System.out.println (Complex.somar (abc, def)); // imprime a soma, que eh (12.3, -2.4)
System.out.println (Complex.subtrair (abc, def)); // imprime a soma, que eh (-3.3, 15.8)
}
}
Desde o começo eu nao tinha entendido bem o enunciado, só consegui fazer pois fiz pesquisas na internet. Esse foi o primeiro esboço do programa, claro que ele pode ser melhorado ainda mais com a sua versao.
[quote=entanglement]Concordo que é simples, mas você não obedeceu ao espírito do enunciado, e provavelmente teria a nota reduzida se o seu professor fosse muito rigoroso. Usualmente você resolveria esse problema assim:
a) A classe Complex tem apenas e tão somente 2 variáveis de instância, não 4. Em matemática, quem teria 4 variáveis de instância são os “quatérnions”.
b) Um exemplo muito, muito simplificado da resolução do seu problema:
[code]
/**
Representa um numero complexo e as operações de soma e sub
*/
public class Complex {
// utilize variaveis de ponto flutuante para representar os dados private da classe
private double a;
private double b;
// forneca um construtor que permita que um objeto seja inicializado quando for declarado
public Complex (double a, double b) {
this.a = a; this.b = b;
}
// forneca um construtor sem argumentos com valores padrao caso nenhum inicializador seja fornecido
public Complex () {
this.a = 0.0; this.b = 0.0;
}
// forneca um metodo para somar 2 numeros Complex
public static Complex somar (Complex x, Complex y) {
return new Complex (x.a + y.a, x.b + y.b);
}
// forneca um metodo para subtrair 2 numeros Complex
public static Complex subtrair (Complex x, Complex y) {
return new Complex (x.a - y.a, x.b - y.b);
}
// forneca um metodo para imprimir numeros Complex na forma (a,b)
public String toString() {
return “(” + a + ", " + b + “)”;
}
}
class TesteComplex {
public static void main (String[] args) {
Complex abc = new Complex (4.5, 6.7);
Complex def = new Complex (7.8, -9.1);
Complex zero = new Complex();
System.out.println (abc); // imprime o numero (4.5, 6.7)
System.out.println (def); // imprime o numero (7.8, -9.1)
System.out.println (Complex.somar (abc, def)); // imprime a soma, que eh (12.3, -2.4)
System.out.println (Complex.subtrair (abc, def)); // imprime a soma, que eh (-3.3, 15.8)
}
}
[/code][/quote]
Putz, valeu muito aí por essa explicação entanglement, você tornou esse exercício simples, obrigado mesmo!