Analise a função a seguir:
int descubra(int vet[], int n, int k)
{
int x=0;
int y=0;
for(int i=0; i<n; i++){
if(vet[i]<k){ // comparação 1
x+=vet[i];
}
if(vet[i]>k){ // comparação 2
y+=vet[i];
}
}
return y-x;
}
a) O que essa função retorna?
b) Quantas vezes a comparação 1 é realizada?
c) Quantas vezes a comparação 2 é realizada?
int descubra(int vet[], int n, int k)
{
int x=0;
int y=0;
for(int i=0; i<n; i++){
if(vet[i]<k){ // comparação 1
x+=vet[i];
}
if(vet[i]>k){ // comparação 2
y+=vet[i];
}
}
return y-x;
}
b) Quantas vezes a comparação 1 é realizada?
c) Quantas vezes a comparação 2 é realizada?
Passo 1
O enunciado apresenta a função e um valor inteiro
. Ela percorre todos os elementos do vetor, faz duas comparações em cada iteração—uma para somar em
os valores menores que
e outra para somar em
os valores maiores que
—e por fim retorna a diferença entre essas somas. O conteúdo envolvido é iteração sobre vetor, somatórios condicionais e contagem de comparações.
descubra
que recebe um vetor vet[]
de tamanho
Passo 2
Vamos entender o que são
e
depois do laço
for
:-
acumula todos os elementos de vet
tais que cada elemento é menor que. Em notação de somatório,
-
acumula todos os elementos de vet
tais que cada elemento é maior que. Em notação de somatório,
A função retorna o valor
ou seja, a diferença entre a soma dos elementos maiores que
e a soma dos elementos menores que
.
Passo 3
Para cada iteração do laço , total de
iterações), a comparação
( é realizada
vezes.
for
(que ocorre para
vet[i] < k
) é avaliada exatamente uma vez. Logo, a comparação
De modo análogo, em cada uma das mesmas
iterações a comparação
( é realizada
vezes.
vet[i] > k
) também é avaliada exatamente uma vez. Portanto, a comparação
Resposta
a) A função retorna a diferença entre a soma dos elementos de e a soma dos elementos menores que
.
b) A comparação é realizada
vezes.
c) A comparação é realizada
vezes.
vet
maiores que
b) A comparação
c) A comparação