| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/03/2003 09:04:00
|
CatiaPJ
Thread.start()
![[Avatar]](/images/avatar/0)
Membro desde: 18/02/2003 00:00:00
Mensagens: 37
Offline
|
Bom dia pessoALL
<BR>Alguém poderia me dar uma dica de como faço para que esse programa rode
<BR>
<BR>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.
<BR>
<BR>Bjs
<BR>Cátia
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/03/2003 11:01:00
|
rucafonsoPJ
Debugger
![[Avatar]](/images/avatar/0)
Membro desde: 06/02/2003 00:00:00
Mensagens: 57
Offline
|
Catia:
<BR>
<BR>Sugeriria o seguinte:
<BR>
<BR>public static final int NP = 0; // Não é Progressão Aritmética nem Geométrica.
<BR>public static final int PA = 1; // Progressão Aritmética.
<BR>public static final int PG = 2; // Progressão Geométrica
<BR>
<BR>public int verificarProgressao(int n1, int n2, int n3) {
<BR> int resposta = NP;
<BR>
<BR> // Estou supondo que n1, n2 e n3 estajem em ordem crescente
<BR> if((n3 - n2) == (n2 - n1) {
<BR> resposta = PA;
<BR> } else if(((n3 / n2) == (n2 / n1)) && (n3 % n2 == 0) && (n2 % n1 == 0)) {
<BR> resposta = PG;
<BR> }
<BR>
<BR> return resposta;
<BR>}
<BR>
<BR>Espero que isso sirva.
<BR>
<BR>Grato,
<BR>
<BR>Rafael Ubiratam Clemente Afonso
<BR>Java 2 Certified Programmer
<BR>
<BR>[ Esta mensagem foi editada por: rucafonso em 07-03-2003 11:02 ]<BR><BR>[ Esta mensagem foi editada por: rucafonso em 07-03-2003 11:03 ]
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/03/2003 11:12:00
|
CatiaPJ
Thread.start()
![[Avatar]](/images/avatar/0)
Membro desde: 18/02/2003 00:00:00
Mensagens: 37
Offline
|
Obrigada pela dica, mas surgiram alguma dúvidas...
<BR>
<BR>Porque você utilizou a palavra static final ao declarar as variáveis?...
<BR>
<BR>public static final int NP = 0;
<BR>public static final int PA = 1;
<BR>public static final int PG = 2;
<BR>
<BR>
<BR>Dentro do if você tb utilizou o && (seria uma condição OU)?...
<BR>
<BR>if(((n3 / n2) == (n2 / n1)) && (n3 % n2 == 0) && (n2 % n1 == 0)) {
<BR>
<BR>
<BR>Desde já obrigada.
<BR>Cátia
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/03/2003 11:46:00
|
rucafonsoPJ
Debugger
![[Avatar]](/images/avatar/0)
Membro desde: 06/02/2003 00:00:00
Mensagens: 57
Offline
|
<!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR>Porque você utilizou a palavra static final ao declarar as variáveis?...
<BR>
<BR>public static final int NP = 0;
<BR>public static final int PA = 1;
<BR>public static final int PG = 2;
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>Conveniência. Uma variável <!-- BBCode Start --><I>static</I><!-- BBCode End --> significa que ela pertence à classe e não a uma instância da classe em particular. Assim você pode escrever algo como:
<BR>
<BR>int resultado = instanciaDeClasse.verificarProgressao(...);
<BR>if(resultado = Classe.PA) {
<BR>/* ... */
<BR>} else if(resultado == Classe.PG) {
<BR>/* .. */
<BR>}
<BR>
<BR>Já <!-- BBCode Start --><I>final</I><!-- BBCode End --> 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.
<BR>Claro que cada caso é um caso, e pode ser conveniente para você dispensar estes modificadores.
<BR>
<BR><!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR>Dentro do if você tb utilizou o && (seria uma condição OU)?...
<BR>if(((n3 / n2) == (n2 / n1)) && (n3 % n2 == 0) && (n2 % n1 == 0)) {
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>Estava pensando no seguinte caso:
<BR>Suponha uma sequencia 3, 9, 27.
<BR>(27/9) == (9/3) == 3, (27%9) == 0 e (9%3) == 0.
<BR>Certo até aqui?
<BR>Agora suponha a sequencia 3, 9, 28.
<BR>(28/9) == (9/3) == 3, (28%9) == 1 != 0, (9%3) == 0.
<BR>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 2 não são multíplos entre si.
<BR>Agora a última sequencia: 3, 9, 81.
<BR>(81/9) != (9/3), (81%9) == 0, (9%3) == 0.
<BR>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).
<BR>Portanto, para termos uma PG é necessário que (n3/n2)==(n2/n1) <!-- BBCode Start --><I>E</I><!-- BBCode End --> 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.
<BR>
<BR>Espero que isso sirva.
<BR>
<BR>Rafael Ubiratam Clemente Afonso
<BR>Java 2 Certified Programmer<BR><BR>[ Esta mensagem foi editada por: rucafonso em 07-03-2003 11:48 ]
|
|
|
 |
|
|
|
|