Descreva um algoritmo que considere como entrada uma lista de n números inteiros distintos e encontre a localização do maior número inteiro par na lista ou retorne 0 se não houver números inteiros pares na lista.

Passo 1

O problema recebe como entrada uma lista de n números inteiros distintos, digamos \;L[1\,..\,n], e pede para encontrar a posição do maior número inteiro par nessa lista ou retornar 0 se não existir nenhum número par. O conteúdo principal é um algoritmo de busca linear que testa cada elemento e mantém o maior valor par encontrado até o momento.

Passo 2

Inicializamos duas variáveis auxiliares antes de varrer a lista:
\text{posMaxPar}\gets 0, que vai guardar a posição do maior par (fica 0 se não achar nenhum).
– (Opcional) \text{maxPar} não precisa receber valor inicial fixo, pois só será definido quando acharmos o primeiro par.

Passo 3

Fazemos um único laço de i=1 até n para examinar cada elemento L[i]:
  1. Testamos se L[i] é par, ou seja, se
L[i]\bmod 2 = 0.
  1. Se for par e \text{posMaxPar}=0 (primeiro par achado) ou \;L[i]>\text{maxPar}\;, então atualizamos
\text{maxPar}\gets L[i],\quad \text{posMaxPar}\gets i.

Passo 4

Ao fim do laço, \text{posMaxPar} vale a posição do maior par encontrado, ou continua 0 se nenhum par apareceu. Basta então retornar \text{posMaxPar}.

Resposta

Segue o pseudocódigo completo:
Algoritmo MaiorPar(L, n)
 posMaxPar ← 0
 para i de 1 até n faça
 se L[i] mod \(2=0\) então
 se posMaxPar \(=0\) ou L[i] > maxPar então
 maxPar ← L[i]
 posMaxPar ← i
 fim se
 fim se
 fim para
 retorne posMaxPar

Exercícios de Livros Relacionados