SóProvas


ID
2286724
Banca
SUGEP - UFRPE
Órgão
UFRPE
Ano
2016
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Considere o algoritmo em pseudocódigo abaixo, que computa, dados dois inteiros, uma sequência de inteiros.
Leia(n,a)
enquanto n!=1 faça:
     imprima n
     se (n mod 2)=0 então:
         n:=n div 2
     senão:
         n:=a*n+1
imprima n

Sobre a sequência impressa, dados os valores de n e de a especificados, analise as proposições a seguir. 
1) Para n=6 e a=3, a sequência gerada é: 6 3 10 5 16 8 4 2 1.
2) Para n uma potência de 2, n=2k para algum k inteiro; para qualquer valor de a, a sequência gerada são as potências de 2 de 2k até 1.
3) Para n=9 e a=3, a sequência gerada é: 14 7 22 11 33 17 52 26 13 40 20 10 5 16 8 4 2 1.
4) Se n não for uma potência de 2, com a=2 o algoritmo não para, gerando uma sequência infinita.
5) Com a=5, se n=17 o programa fica em laço infinito na sequência 17 86 43 216 108 54 27 136 68 34.
Estão corretas, apenas: 

Alternativas
Comentários
  • Como o item 3) diz que imprime à sequência de "A" invalida as demais questões porque nunca será impresso, além disso como "A" não recebe ninguém sempre valerá 3, o que determina ainda mais que todas alternativas que tenha o item 3) são inválidas assim a alternativa correta é letra D)

  • Fiz dessa maneira 

    letra a)

    n=6; 

    a=3;

    n=n/2

    n=6/2

    n=3

    n=a*n+1

    n=3*3+1=>10

    n=10/2=>5

    n=3*5+1=>16

    n=16/2=>8

    n=8/2=>4

    n=4/2=>2

    n=2/2=>1

    (6 3 10 5 16 8 4 2 1).

    letra c)

    n=9

    a=3

    n=3*9+1=>28

    n=28/2=>14

    n=14/2=>7

    n=3*7+1=22

    n=22/2=>11

    e por ai vai até chegar 1.

    9  3  28 14 7 22 11 33 17 52 26 13 40 20 10 5 16 8 4 2 1.

     

  • Não entendi o item 5.

    5) Com a=5, se n=17 o programa fica em laço infinito na sequência 17 86 43 216 108 54 27 136 68 34.

    Rodando o item 5:

    1 - n=17 e a=5

    2 - imprime 17

    3 - se (17 mod 2) =  0 então ===> Resultado dessa opreção é FALSO. Não executa. O resto de 17 dividido por 2 não é 0.

    4 - senão n=a*n+1 => n=5*18 que é igual a 90.

    5 - imprima 90.

    No Item 5 informa que era pra imprimir 86... 

    Marquei a letra A e errei.

  • EstudanteMK, não tem parenteses, portanto voce faz a multiplicaçao e depois a soma.

    no item 5:

    3 - se (17 mod 2) = 0 então ===> Resultado dessa opreção é FALSO. Não executa. O resto de 17 dividido por 2 não é 0.

    4 - senão n=a*n+1 => n=5*17+1 = 85+1=86.

    5 - imprima 86.

    conforme você for fazendo, vai ver que a sequencia vai batendo.

    Quando chegar a 34, ele vai dividir por 2 e acha 17, com isso volta na sequencia, ou seja, vai ficar repetindo ela eternamente.

    o item 4, o numero sempre vai ser impar, então vai incrementando e o numero nunca será 1 para parar o looping.

    Espero ter ajudado.

  • EstudanteMK, não tem parenteses, portanto voce faz a multiplicaçao e depois a soma.

    no item 5:

    3 - se (17 mod 2) = 0 então ===> Resultado dessa opreção é FALSO. Não executa. O resto de 17 dividido por 2 não é 0.

    4 - senão n=a*n+1 => n=5*17+1 = 85+1=86.

    5 - imprima 86.

    conforme você for fazendo, vai ver que a sequencia vai batendo.

    Quando chegar a 34, ele vai dividir por 2 e acha 17, com isso volta na sequencia, ou seja, vai ficar repetindo ela eternamente.

    o item 3, é o unico errado, pois, se o n for diferente de 1, a primeira coisa que ele imprime é o n, que nesse caso é 9. Ele começa a sequencia com 14.

    Resposta letra D.

    Espero ter ajudado.

  • Força Guerreiro!!!!!!