9 Finclude <stdio.h>
10
11 - int main(){
12 int x, y=0;
13 scanf(%d, &x);
14 - while(x>0){
15 x=x/15;
16
17
y++;
}
18
19
20
21}
Considerando a execuçâo do código acima, qual o valor dos valores abaixo o usuário deve digitar para que o número impresso seja 4?
( ) 4375
10
11 - int main(){
12 int x, y=0;
13 scanf(%d, &x);
14 - while(x>0){
15 x=x/15;
16
17
y++;
}
18
19
20
21}
Considerando a execuçâo do código acima, qual o valor dos valores abaixo o usuário deve digitar para que o número impresso seja 4?
( ) 4375
Passo 1
Beleza, vamos resumir o que o exercício está pedindo. Temos um código em C que lê um número inteiro
x e, dentro de um laço while, divide esse número por 15 repetidamente enquanto x for maior que 0. A cada divisão, uma variável y é incrementada. O objetivo é descobrir qual valor o usuário deve inserir para que, ao final, y seja igual a 4. Vamos usar conceitos de laços de repetição e divisões sucessivas para resolver isso.Passo 2
Primeiro, vamos entender o que o código está fazendo:
int x, y=0;
scanf("%d", &x);
while(x > 0){
x = x / 15;
y++;
}
Aqui,
x é o número que o usuário entra, e y começa em 0. Enquanto x for maior que 0, o código divide x por 15 e incrementa y em 1.Passo 3
Nosso objetivo é que, após o laço
while, y seja igual a 4. Isso significa que a divisão por 15 deve ocorrer 4 vezes antes de x se tornar 0 ou um número negativo. Vamos entender quantas vezes podemos dividir um número por 15 antes que ele seja menor ou igual a 0.Passo 4
Vamos definir isso matematicamente. Queremos encontrar o menor número
x tal que:Mas como
x é um inteiro positivo, na verdade queremos que após 4 divisões, x seja menor que 1. Assim, o menor valor que satisfaz essa condição é quando:Calculando os valores:
Passo 5
Isso significa que qualquer valor de
x que esteja entre 3375 e 50624 fará com que y seja incrementado 4 vezes até que o laço pare. O exercício apresenta a opção 4375, que está dentro deste intervalo.Resposta
O usuário deve digitar 4375 para que o número impresso seja 4.