Informática, perguntado por pmbolsas, 9 meses atrás

Considere a função seguinte, codificada na linguagem de programação C (o operador % significa resto da divisão inteira):

surpresa (int n){
int a = 0,b=0;
while (n > 0){
if ((n % 2) == 0)
a = a + 1;
else
b = b + 1;
n = n / 2;
}
printf ("%d %d\n", a, b);
}

Os dois valores impressos pela função são iguais quando o valor de n é:
7 *
a. 48
b. 47
c. 46
d. 45
e. 44

Soluções para a tarefa

Respondido por pantafernando
1

Resposta:

E (44)

Explicação:

Como esse é um problema de programação, não é possível resolvê-lo algebricamente, isto é, calculando uma fórmula e buscando o resultado. Assim, precisamos resolvê-lo ou implementando o programa, não viável sem o uso de um computador, ou realizando um teste de mesa com cada um dos valores propostos nas alternativas.

Antes de iniciar um trabalhoso processo de teste, alguns conceitos de programação:

Primeiro, uma das características do “while” é que este irá encerrar seu ciclo no momento em que a condição for falsa, não executando um último ciclo uma vez que ele teste a condição no início.

Em segundo, no caso das variáveis, a divisão de dois inteiros sempre será inteiro. Caso numericamente a divisão não seja exata, o valor resultante será truncado. De posse dessa informação, vamos fazer os valores que serão o domínio de cada alternativa:

- 48=> 48; 24; 12; 6; 3; 1; 0

- 47=> 47; 23; 11; 5; 2; 1; 0

- 46=> 46; 23; 11; 5; 2; 1; 0

- 45=> 45; 22; 11; 5; 2; 1; 0

- 44=> 44; 22; 11; 5; 2; 1; 0

Iniciando o teste de mesa:

48)

A=0; B=0;

N=48; n%2=0; A=1;B=0

N=24; n%2=0; A=2;B=0

N=12; n%2=0; A=3;B=0

N=6; n%2=0; A=4;B=0

N=3; n%2=5; A=4;B=1

N=1; n%2=5; A=4;B=2 (A é diferente de B)

47)

A=0; B=0;

N=47; n%2=5; A=0;B=1

N=23; n%2=5; A=0;B=2

N=11; n%2=5; A=0;B=3

N=5; n%2=5; A=0;B=4

N=2; n%2=0; A=1;B=4

N=1; n%2=5; A=1;B=5 (A é diferente de B)

46)

A=0; B=0;

N=46; n%2=0; A=1;B=0

N=23; n%2=5; A=1;B=1

N=11; n%2=5; A=1;B=2

N=5; n%2=5; A=1;B=3

N=2; n%2=0; A=2;B=3

N=1; n%2=5; A=2;B=4 (A é diferente de B)

45)

A=0; B=0;

N=45; n%2=5; A=0;B=1

N=22; n%2=0; A=1;B=1

N=11; n%2=5; A=1;B=2

N=5; n%2=5; A=1;B=3

N=2; n%2=0; A=2;B=3

N=1; n%2=5; A=2;B=4 (A é diferente de B)

44)

A=0; B=0;

N=44; n%2=0; A=1;B=0

N=22; n%2=0; A=2;B=0

N=11; n%2=5; A=2;B=1

N=5; n%2=5; A=2;B=2

N=2; n%2=0; A=3;B=2

N=1; n%2=5; A=3;B=3 (A é igual a B)

Resposta: Alternativa E (44)


pmbolsas: muito obrigado, postei mais 6 perguntas desse assunto, se pudesse dar uma olhada, e ajudaria muito
Perguntas interessantes