Dúvida na interpretação de um exercício [RESOLVIDO] Obrigado a todos!

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…