Boa tarde a todos,
sou novo no fórum e também estou começando a aprender JAVA agora.
Estou com o seguinte exercício:
Escreva um programa que, dada uma variável x (com valor 180, por
exemplo), temos y de acordo com a seguinte regra:
se x é par, y = x / 2
se x é impar, y = 3 * x + 1
imprime y
O programa deve então jogar o valor de y em x e continuar até que y tenha
o valor final de 1. Por exemplo, para x = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Até a parte de controlar o que é par e o que não é tudo bem, porém essa parte " O programa deve então jogar o valor de y em x e continuar até que y tenha o valor final de 1. Por exemplo, para x = 13, a saída será: 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1 " eu não entendi bem… Já li, re-li e re-li… Não sei se eu estou cansado de tanto ficar estudando e minha cabeça esta meio abobada, mas eu não entendi essa parte ou como faze-la.
Será que alguém pode me dar uma “luz”?
Eu agradeço a atenção de todos.
Att.
Português:
fazer algo até que ocorra condição
Java:
do {
algo
} while (!condição);
[quote]Escreva um programa que, dada uma variável x (com valor 180, por
exemplo), temos y de acordo com a seguinte regra:
se x é par, y = x / 2
se x é impar, y = 3 * x + 1
imprime y
O programa deve então jogar o valor de y em x e continuar até que y tenha
o valor final de 1. Por exemplo, para x = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Até a parte de controlar o que é par e o que não é tudo bem, porém essa parte " O programa deve então jogar o valor de y em x e continuar até que y tenha o valor final de 1. Por exemplo, para x = 13, a saída será: 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1 " eu não entendi bem… Já li, re-li e re-li… Não sei se eu estou cansado de tanto ficar estudando e minha cabeça esta meio abobada, mas eu não entendi essa parte ou como faze-la.
Será que alguém pode me dar uma "luz"?
Eu agradeço a atenção de todos.
Att. [/quote]
Qual a relação entre o 13, e o primeiro valor 40 ?
rpz…sua lógica ta meia fraca…
qer dizer, a lógica vc já tem… vc não está seguindo o que o enuciado diz…
- vou exclarecer mais um pokinho…
no enuciado diz: “continuar até que y tenha o valor final de 1.”, pronto, com isso ai vc já sabe que vai haver um loop, como ele n pediu nenhuma condição para entrada no loop, só falou na saida, aconselho vc usar o “do{…}while(CONDICAO DE SAIDA)”.
pronto…
dentro desse do … while ela já te deu tudo…
vc testar se é par, e fazer isso…
ele testar se é impar, e fazer aquilo…
escrever o “y”…
jogar o valor de “y” em “x”…
pronto…
o programa já está feito…
acredito que seu problema foi no loop, né!!!
uma dica:
como vc msm dise q esta iniciando…
aconselho vc começar devagar, primeiro dando uma lidazinha em lógica de programação…
pra depois aprender a linguagem…
intendeu sobre a questao??
vlw
a questão diz o q???
se o valor de X (que no caso é 13) for IMPAR, ele faz isso
y = 3 * x + 1;
intao…
y = 3 * 13 + 1;
y = 39 + 1;
y = 40.
por isso que o PRIMEIRO valor que vai escrever de Y é 40…
vlw
Boa noite mano… Pelo que eu entendi a parte que verifica se o valor de “X” é par ou impar você ja sabe… sua dúvida é no loop de repetição…
então eu fiz o algoritmo aqui considerando o valor de X = 13… e os valores bateram com os que você sitou acima caso o valor de X fosse 13…
Testa o algoritmo ai e me fala se deu tudo certo OK???
Abraço!!
public class Valores {
public static void main(String args[]){
int x = 13; // CONSIDERANDO QUE O VALOR DE X SEJA 13
int y = 0;
while( x !=1 ){
if( x % 2 == 0){
y = x/2;
}else{
y = 3*x+1;
}
System.out.println(y);
x = y;
}
}
}
1 curtida
Obrigado a todos pelas dicas.
Damiao Cunha, eu tenho a lógica, porém eu estava estudando a noite toda e o dia todo sem parar, pois eu não quero perder uma oportunidade de emprego que surgiu na empresa onde eu trabalho. Por esse motivo, eu não consegui enxergar o “obvio”.
Mais uma vez, obrigado a todos!
Ótimo fórum, estarei presente mais vezes por aqui.
Att.
[quote=Anderson S.]Boa noite mano… Pelo que eu entendi a parte que verifica se o valor de “X” é par ou impar você ja sabe… sua dúvida é no loop de repetição…
então eu fiz o algoritmo aqui considerando o valor de X = 13… e os valores bateram com os que você sitou acima caso o valor de X fosse 13…
Testa o algoritmo ai e me fala se deu tudo certo OK???
Abraço!!
[code]
public class Valores {
public static void main(String args[]){
int x = 13; // CONSIDERANDO QUE O VALOR DE X SEJA 13
int y = 0;
while( x !=1 ){
if( x % 2 == 0){
y = x/2;
}else{
y = 3*x+1;
}
System.out.println(y);
x = y;
}
}
}
[/code][/quote]
tem um errinho nesse código aê…
a questão pede “até que Y seja igual a 1”, e em seu teste vc colocou X…
o resto tá Ok…
eu já tinha feito antes de comentar, e só deu dirente desse ai, pq o meu loop foi com do { … }while(), e o teste que em seu caso tá errado…+ o resto tdo ok…
vlw
[quote=LordLink]Obrigado a todos pelas dicas.
Damiao Cunha, eu tenho a lógica, porém eu estava estudando a noite toda e o dia todo sem parar, pois eu não quero perder uma oportunidade de emprego que surgiu na empresa onde eu trabalho. Por esse motivo, eu não consegui enxergar o “obvio”.
Mais uma vez, obrigado a todos!
Ótimo fórum, estarei presente mais vezes por aqui.
Att.[/quote]
blz…
aproveite msm as oportunidades…elas podem ser UNICAS…
se já estiver satisfeito, coloca [RESOLVIDO] no titulo do tópico…
vlw
Foi malz não prestei muito a atenção tava meio ocupado…