1
resposta

[Projeto] Desvendando o código

int[] numeros = { 5, 42, 8, 11, 23, 1, 14, 30, 19, 27, 36, 2, 50, 7, 18, 9 };

    int primeiroDigito = Array.IndexOf(numeros, 19);
    int segundoDigito = Array.IndexOf(numeros, 42);
    int terceiroDigito = Array.IndexOf(numeros, 7);

    Console.WriteLine($"Combinação do cadeado: {primeiroDigito}-{segundoDigito}-{terceiroDigito}");
1 resposta

Olá, Eduardo. Como vai?

Excelente código! Sua resolução está totalmente correta e demonstra que você compreendeu com muita clareza a mecânica do método Array.IndexOf().

A sua lógica para encontrar os índices dos números 19, 42 e 7 dentro do array numeros funcionou perfeitamente. Como o C# utiliza a indexação baseada em zero (onde o primeiro elemento começa na posição 0), o computador varre o array e encontra com precisão as posições corretas para desvendar a combinação do cadeado.

Para enriquecer o seu projeto e expandir os seus conhecimentos sobre a manipulação de estruturas indexadas, separei duas dicas técnicas bem importantes sobre o comportamento desse método no dia a dia:


1. Cuidados com Elementos Duplicados

O método Array.IndexOf() faz uma busca linear no array começando do início (índice 0) e indo em direção ao fim. Um detalhe fundamental que você deve levar em conta em projetos reais é que ele sempre retorna apenas a posição da primeira ocorrência encontrada.

Se o seu array de números contivesse duas vezes o número 42 (por exemplo, na segunda posição e na última), o Array.IndexOf(numeros, 42) ainda assim retornaria o índice 1, ignorando completamente a existência do segundo número repetido.

  • Dica de ouro: Caso você precise buscar um elemento de trás para frente (começando do final do array), o C# disponibiliza o método gêmeo Array.LastIndexOf(numeros, 42).

2. O que acontece se o número não existir?

No seu desafio, todos os números procurados estavam presentes no array. Mas o que aconteceria se você tentasse buscar a posição de um número que não faz parte da lista, como o número 99?

int numeroInexistente = Array.IndexOf(numeros, 99);
Console.WriteLine(numeroInexistente); // O console vai imprimir: -1

Quando o Array.IndexOf() varre toda a coleção e não encontra o valor solicitado, ele retorna o valor padrão -1. Na programação, tratar esse retorno é uma excelente prática para evitar que o seu sistema tente acessar índices inválidos e acabe quebrando.

Em um cenário real, você poderia proteger o seu código usando uma estrutura condicional simples:

int indice = Array.IndexOf(numeros, 19);

if (indice != -1)
{
    Console.WriteLine($"Número encontrado na posição: {indice}");
}
else
{
    Console.WriteLine("O número informado não pertence ao array.");
}

Parabéns por mais essa entrega impecável e por dominar com tanta consistência o uso e a lógica dos arrays em C#!

Espero que possa ter lhe ajudado!