progressão aritmética ou uma progressão geométrica.  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
CatiaPJ
Thread.start()
[Avatar]

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
[WWW] aim icon [ICQ]
rucafonsoPJ
Debugger
[Avatar]

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 ]
[WWW] aim icon [ICQ]
CatiaPJ
Thread.start()
[Avatar]

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
[WWW] aim icon [ICQ]
rucafonsoPJ
Debugger
[Avatar]

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 ]
[WWW] aim icon [ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team