Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Vetores — FCC 2016

Algoritmos e Estrutura de DadosVetores
Código
fc028604
Banca
FCC
Órgão
Copergás - PE
Ano
2016
Nível
Superior
Cargo
Analista Tecnologia da Informação
Considere o algoritmo a seguir, na forma de pseudocódigo:Var n, i, j, k, x: inteiroVar v: vetor[0..7] inteiroIníciov[0] ← 12v[1] ← 145v[2] ← 1v[3] ← 3v[4] ← 67v[5] ← 9v[6] ← 45n ← 8k ← 3x ← 0Para j ← n-1 até k passo -1 façav[j] ← v[j - 1];Fim_parav[k] ← x;FimEste pseudocódigo
  1. Aexclui o valor contido na posição x do vetor v.
  2. Binsere o valor de x entre v[k-1]e v[k] no vetor v.
  3. Cexclui o valor contido na posição k do vetor v.
  4. Dtentará, em algum momento, acessar uma posição que não existe no vetor.
  5. Einsere o valor de k entre v[x] e v[x+1] no vetor v.
Revelar gabarito e comentário

GabaritoB — insere o valor de x entre v[k-1]e v[k] no vetor v.

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”.

Inserção em vetor com deslocamento

Gabarito: letra B. O algoritmo percorre o vetor de trás para frente a partir da última posição até o índice k, copiando cada elemento para a posição seguinte, e então atribui o valor x à posição k. Isso insere x (0) entre os elementos que originalmente estavam em v[k-1] e v[k], deslocando v[k] e os seguintes uma casa à direita.

O vetor original é: v[0]=12, v[1]=145, v[2]=1, v[3]=3, v[4]=67, v[5]=9, v[6]=45 (v[7] não foi inicializado).

Com n=8, k=3, x=0, o laço Para j ← n-1 até k passo -1 executa para j=7,6,5,4,3. Em cada iteração, v[j] recebe v[j-1]. Após o laço, v[3] recebe x=0. Resultado final: v[0]=12, v[1]=145, v[2]=1, v[3]=0, v[4]=3, v[5]=67, v[6]=9, v[7]=45.

Isso mostra que o algoritmo insere o valor x na posição k, empurrando os elementos de k em diante para a direita. O elemento que antes estava em v[k] (3) passa a ocupar v[k+1] (4). Portanto, x fica entre v[k-1] (1) e o antigo v[k] (3).

Alternativa A — ❌ Incorreta

A alternativa afirma que o algoritmo exclui o valor contido na posição x do vetor. Na verdade, x é um valor (0) que é inserido, não uma posição a ser excluída. Nenhuma exclusão ocorre.

Alternativa B — ✅ Correta ⟵ GABARITO

Como demonstrado, o valor x é inserido na posição k, situando-se entre os elementos que ocupavam as posições k-1 e k originais. A descrição está correta.

Alternativa C — ❌ Incorreta

Diz que o algoritmo exclui o valor da posição k. Embora o valor original de v[k] (3) seja sobrescrito? Não, ele é deslocado para v[k+1]. O vetor permanece com todos os valores originais, apenas reorganizados. Não há exclusão.

Alternativa D — ❌ Incorreta

Alega que em algum momento o algoritmo acessa uma posição inexistente. O vetor tem índices de 0 a 7. O laço acessa v[j] e v[j-1] para j de 7 a 3, todos dentro do intervalo válido. Não há acesso fora dos limites.

Alternativa E — ❌ Incorreta

Inverte os papéis: afirma que o valor de k (3) é inserido entre v[x] e v[x+1]. Na realidade, é o valor de x (0) que é inserido na posição k. A confusão entre x e k torna a alternativa errada.

Link permanente: /questoes/fc028604