Bom dia pessoALL
Alguém poderia me dar uma dica de como faço para que esse programa rode
Escreva uma aplicação de console que receba três argumentos numéricos inteiros indicando se o valores dados compõe uma progressão aritmética ou uma progressão geométrica.
Bjs
Cátia
Catia:
Sugeriria o seguinte:
public static final int NP = 0; // Não é Progressão Aritmética nem Geométrica.
public static final int PA = 1; // Progressão Aritmética.
public static final int PG = 2; // Progressão Geométrica
public int verificarProgressao(int n1, int n2, int n3) {
int resposta = NP;
// Estou supondo que n1, n2 e n3 estajem em ordem crescente
if((n3 - n2) == (n2 - n1) {
resposta = PA;
} else if(((n3 / n2) == (n2 / n1)) && (n3 % n2 == 0) && (n2 % n1 == 0)) {
resposta = PG;
}
return resposta;
}
Espero que isso sirva.
Grato,
Rafael Ubiratam Clemente Afonso
Java 2 Certified Programmer
[ Esta mensagem foi editada por: rucafonso em 07-03-2003 11:02 ]
[ Esta mensagem foi editada por: rucafonso em 07-03-2003 11:03 ]
Obrigada pela dica, mas surgiram alguma dúvidas…
Porque você utilizou a palavra static final ao declarar as variáveis?..
public static final int NP = 0;
public static final int PA = 1;
public static final int PG = 2;
Dentro do if você tb utilizou o && (seria uma condição OU)?..
if(((n3 / n2) == (n2 / n1)) && (n3 % n2 == 0) && (n2 % n1 == 0)) {
Desde já obrigada.
Cátia 
| Quote: |
|
Conveniência. Uma variável static significa que ela pertence à classe e não a uma instância da classe em particular. Assim você pode escrever algo como:
int resultado = instanciaDeClasse.verificarProgressao(…);
if(resultado = Classe.PA) {
/* … /
} else if(resultado == Classe.PG) {
/ … */
}
Já final indica que a variável não pode ser modificada. Assim se em algum lugar do código você fizer Classe.PG = 123, por exemplo, o Compilador soltará uma mensagem de erro.
Claro que cada caso é um caso, e pode ser conveniente para você dispensar estes modificadores.
| Quote: |
|
Estava pensando no seguinte caso:
Suponha uma sequencia 3, 9, 27.
(27/9) == (9/3) == 3, (27%9) == 0 e (9%3) == 0.
Certo até aqui?
Agora suponha a sequencia 3, 9, 28.
(28/9) == (9/3) == 3, (28%9) == 1 != 0, (9%3) == 0.
No caso acima (28/3) e (9/3) são iguais, mas o resto de uma das divisões não foi nulo, portanto estes números (9 e 28) não são multíplos entre si.
Agora a última sequencia: 3, 9, 81.
(81/9) != (9/3), (81%9) == 0, (9%3) == 0.
Apesar dos restos das divisões serem nulos, a sequencia acima não é Geométrica, pois o múltiplo usado do 1o. número para o segundo (9/3=3) não serve para passar para o 3o. número (81/9=9).
Portanto, para termos uma PG é necessário que (n3/n2)==(n2/n1) E também que os restos destas divisões seja 0. Daí o uso do "&&". Se usasse o condicional "||" ("ou"), bastaria que uma das condições acima fosse verdadeiro para que se caracterizasse uma PG.
Espero que isso sirva.
Rafael Ubiratam Clemente Afonso
Java 2 Certified Programmer
[ Esta mensagem foi editada por: rucafonso em 07-03-2003 11:48 ]