Ajuda em loping [RESOLVIDO]

7 respostas
Benjamin10

Bom dia pessoal;

Estou começando em programação, preciso de ajuda na resolução de um algoritmo.

O problema é esse.

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 é ímpar, y = 3 * x +1
. imprime y

. O programa deve então jogar o valor de y em x e continuar até que tenha o valor final de 1. Pro exemplo, para x = 13, a saída sera:

40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4-> -> 2-> 1

Gostaria que me ajudassem neste problema, ele esta no capitulo 3 exercício 7 apostila caelum.

Obrigado

7 Respostas

lina

Oi,

Bom dia Benjamin10,

O que você já fez deste exercício? e qual exatamente a sua dúvida?

Tchauzin!

D

Coloca ai o que vc já fez para te ajudar. Ou vc está com problema na idéia mesmo?

userguj

Cara, jah fiz esses exercicios ai…
de cara vc vai achar este ai complicado, mais e tranquilo…
poste ai a sua ideia do exercicio, o que vc jah fez…!

pq o interessante é vc conseguir sem ninguem precisar te dar a respostas, sakou :!: :!:

angeloghiotto

Começe a escrever o código, mesmo que vc não tenho uma ideia certa do que fazer, vai implementando no codigo oque vem na sua cabeça, o que você pensa que vai solucionar o problema, isso ajuda muito a solucionar o exercicio…

bom, eu vi outra pessoa com duvida nesse mesmo problema, para ela eu dei a reposta por ela jah tinha dado um caminho e talz, se você quizer ver… Relembrando que é muito bom você tentar antes de olhar…

http://www.guj.com.br/posts/list/207938.java

Benjamin10

Pessoal ta ai onde eu parei. no exercício fala pra usar fors encadeados.

quando ele executa o if divide o x pelo y. so que como faço para essa variável y que agora é ímpar entrar na outra conta e começar o processo novamente.

public class Main {

public static void main(String[] args) {

    int x=10;
    int y=0;
    
    for(int i = 0; i<1; i++){
        
        if((x % 2)==0){
            y = x/2;
            System.out.println(y);
            
        }
        else
        {
            y = (3 * x)+1;
            System.out.println(y);
        }
    }
}

}

Obrigado pessoal pela ajuda, gostei muito deste fórum :smiley: ;

pmlm

Não precisas de um for, já que não sabes quantas vezes vais fazer o loop mas precisas sim de um while, porque o que sabes é a condição de paragem (y=1)

public class Main {
  
    public static void main(String[] args) {

        int y=10;
        int x=y; //Esta variável era desnecessária mas vou mantê-la para ser mais fácil de perceber
        
       while (y != 1) {  //Entra no loop sempre que y seja diferente de 1
            
            if((x % 2)==0){
                y = x/2;
              
            } else  {
                y = (3 * x)+1;
            }
           System.out.println(y);
           x = y; //x toma o valor de y
        }
    }
}

A mesma coisa só com uma variável:

public class Main {

    public static void main(String[] args) {

        int y=10;
        
       while (y != 1) {  //Entra no loop sempre que y seja diferente de 1
            
            if((y % 2)==0){
                y = y/2;
              
            } else  {
                y = (3 * y) + 1;
            }
           System.out.println(y);
        }
    }
}
Benjamin10

Obrigado fera agora entendi o problema valeu msmo

Abraços !! :smiley:

Criado 25 de maio de 2010
Ultima resposta 26 de mai. de 2010
Respostas 7
Participantes 6