Questão de Algoritmos e Estrutura de Dados — Algoritmos — UPENET/IAUPE 2017
Algoritmos e Estrutura de Dados›Algoritmos
Código
qq307304
Banca
UPENET/IAUPE
Órgão
UPE
Ano
2017
Nível
Superior
Cargo
NET/IA - - Analista de Sistemas - Desenvolvimento de Web
Considere o seguinte algoritmo:Para i de 7 até 4 Façaaux <- v[i]v[i] <- v[7 - i]v[7 - i] <- auxi <- i - 1Fim_Paramax = maior vv[2] <- v[0]v[max - v[2]] <- v[max - v[1]]Assinale a alternativa que possui o estado final do vetor v inicialmente definido com os elementos de 32 a 39.
A37, 38, 39, 36, 35, 34, 33, 32
B38, 38, 39, 36, 35, 34, 33, 32
C39, 38, 39, 36, 35, 34, 33, 32
D39, 39, 39, 36, 35, 34, 33, 32
E39, 38, 37, 36, 35, 34, 33, 32
Revelar gabarito e comentário▾
GabaritoB — 38, 38, 39, 36, 35, 34, 33, 32
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Simulação de algoritmo com vetor e laço
Gabarito: letra B. Após a execução do loop (invertendo pares simétricos) e das duas atribuições finais, o vetor original [32,33,34,35,36,37,38,39] se transforma em [38,38,39,36,35,34,33,32], exatamente a alternativa B.
O algoritmo manipula um vetor v de 8 posições (índices 0 a 7), inicialmente com os valores 32 a 39. O primeiro bloco é um laço que troca elementos simétricos; o segundo bloco realiza duas atribuições baseadas no maior valor do vetor.
Laço:Para i de 7 até 4 Faça — interpretamos que i assume os valores 7, 6, 5, 4 (decrescendo). O comando i <- i - 1 é redundante nessa interpretação, mas não altera a sequência.
Iteração
i
Operação
Estado do vetor (índices 0 a 7)
1
7
troca v[7] com v[0]
[39,33,34,35,36,37,38,32]
2
6
troca v[6] com v[1]
[39,38,34,35,36,37,33,32]
3
5
troca v[5] com v[2]
[39,38,37,35,36,34,33,32]
4
4
troca v[4] com v[3]
[39,38,37,36,35,34,33,32]
Após o laço, o vetor é invertido (primeira metade trocada com a segunda).
v[max - v[2]] <- v[max - v[1]]: calculamos max - v[2] = 39 - 39 = 0 e max - v[1] = 39 - 38 = 1. Então v[0] <- v[1] → v[0] recebe 38 → vetor final: [38,38,39,36,35,34,33,32]
1Vetor inicial32 a 39
2Laço (i=7 a 4)Inverte pares simétricos
3max = maior v39
4v[2] ← v[0]v[2]=39
5v[0] ← v[1]v[0]=38
LEVEL · soulevel.com.br
Análise das alternativas
Alternativa A — ❌ Incorreta
Apresenta v[0]=37, que não é o resultado da última atribuição. O valor correto é 38.
Alternativa B — ✅ Correta ⟵ GABARITO
Exatamente o vetor final obtido: [38,38,39,36,35,34,33,32].
Alternativa C — ❌ Incorreta
Mantém v[0]=39 (valor após o laço, mas antes da segunda atribuição). A última linha altera v[0] para 38.
Alternativa D — ❌ Incorreta
Tanto v[0] quanto v[1] e v[2] são 39, o que não ocorre. Apenas v[2] fica 39.
Alternativa E — ❌ Incorreta
Corresponde ao vetor imediatamente após o laço, antes das atribuições finais.
Conclusão
O gabarito é a letra B. A principal dificuldade da questão é acompanhar as trocas no laço e o cálculo dos índices na última linha, que depende dos valores já alterados.
PEGA ESSA DICA!
Simule cada passo em uma tabela, mantendo controle do estado do vetor após cada operação. Atente que a segunda atribuição usa os valores já modificados pela primeira (v[2] foi alterado).