progressão aritmética ou uma progressão geométrica

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 :stuck_out_tongue:

Quote:


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;




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) {

/
… */

}



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:


Dentro do if você tb utilizou o && (seria uma condição OU)?..

if(((n3 / n2) == (n2 / n1)) && (n3 % n2 == 0) && (n2 % n1 == 0)) {




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 ]