(Q2 - 3,5 pontos) Considere uma lista u de tamanho n >= 2 em memória. Escreve o trecho de código capaz alterar a própria lista u da seguinte forma: deve-se inverter a posição de todos os pares de elementos da dessa lista. Veja os exemplos abaixo:
  • Se u=[1,2,3,4,5,6,7,8], deverá ser modificada para u=2,1,4,3,6,5,8,7].
  • Se u=[0,100,33,-1,500], deverá ser modificada para u=[100,0,-1,33,500].
    OBS 1: Obviamente, seu código deverá funcionar para qualquer lista com 2 ou mais elementos e não apenas para as duas listas dos exemplos acima. OBS 2: veja que no caso de uma lista com número ímpar de elementos (segundo exemplo), nada deverá ser feito com o último elemento.

Passo 1

Beleza, vamos lá! O problema pede para a gente pegar uma lista chamada u que tem pelo menos 2 elementos e inverter a posição de cada par de elementos. Por exemplo, se a lista for [1, 2, 3, 4], ela deve virar [2, 1, 4, 3]. Se a lista tiver um número ímpar de elementos, como [0, 100, 33, -1, 500], a gente inverte os pares que dá e deixa o último elemento do jeitinho que está. Para resolver isso, vamos precisar entender como acessar e modificar elementos em listas, usar loops para percorrer a lista e fazer trocas de posições.

Passo 2

Primeiro, vamos pensar em como percorrer a lista em pares. Se a lista tem n elementos, a gente pode usar um loop que vai de 0 até n-2, pulando de 2 em 2. Isso porque vamos sempre pegar dois elementos de cada vez: o de índice i e o de índice i+1.

Passo 3

Dentro do loop, a gente vai trocar os elementos de posição. Ou seja, vamos fazer com que o elemento que estava em i passe para i+1 e o que estava em i+1 passe para i. Essa troca é bem simples e pode ser feita em uma única linha de código.

Passo 4

Precisamos também cuidar do caso em que a lista tem um número ímpar de elementos. Nesse caso, o último elemento não tem par para trocar, então vamos deixar ele na mesma posição. O nosso loop já vai até n-2, garantindo que não tentemos trocar um elemento que não tem par.

Passo 5

Agora, vamos colocar tudo isso em código. Vou usar Python porque é uma linguagem bem clara e fácil de entender. Aqui está uma função que faz exatamente o que a gente precisa:
def inverter_pares(u):
    n = len(u)
    for i in range(0, n - 1, 2):
        u[i], u[i + 1] = u[i + 1], u[i]
    return u

Resposta

Usando a função acima, se tivermos u = [0, 100, 33, -1, 500], após a execução, a lista ficará assim:
[100, 0, -1, 33, 500]

Exercícios relacionados