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.