Fiz esse programa de três formas: uma com o foreach, que foi a que eu fiz inicialmente, antes de saber que teria que armazenar a posição encontrada, outra com o for e mais uma com o while. Daria para fazer com que o foreach também armazenasse a posição encontrada, só que isso seria contraintuitivo para o método.
While:
var listaAlunos = new List<string>() { "Ana", "Carlos", "Bianca", "João", "Marina" };
bool alunoEncontrado = false;
int posicaoAluno = 0;
Console.Clear();
Console.Write ("Digite o aluno a ser buscado: ");
string nomeAluno = Console.ReadLine()!;
int i = 0;
while (i < listaAlunos.Count) {
if (listaAlunos[i] == nomeAluno) {
posicaoAluno = i;
alunoEncontrado = true;
}
i++;
}
if (alunoEncontrado) Console.WriteLine ($"O aluno {nomeAluno} foi encontrado na posição {posicaoAluno+1} da lista de chamada.");
else Console.WriteLine ($"O aluno {nomeAluno} não foi encontrado na lista.");
For:
var listaAlunos = new List<string>() { "Ana", "Carlos", "Bianca", "João", "Marina" };
bool alunoEncontrado = false;
int posicaoAluno = 0;
Console.Clear();
Console.Write ("Digite o aluno a ser buscado: ");
string nomeAluno = Console.ReadLine()!;
for (int i = 0; i < listaAlunos.Count; i++) {
if (listaAlunos[i] == nomeAluno) {
posicaoAluno = i;
alunoEncontrado = true;
}
}
if (alunoEncontrado) Console.WriteLine ($"O aluno {nomeAluno} foi encontrado na posição {posicaoAluno+1} da lista de chamada.");
else Console.WriteLine ($"O aluno {nomeAluno} não foi encontrado na lista.");
Foreach:
var listaAlunos = new List<string>() { "Ana", "Carlos", "Bianca", "João", "Marina" };
bool alunoEncontrado = false;
Console.Clear();
Console.Write ("Digite o aluno a ser buscado: ");
string nomeAluno = Console.ReadLine()!;
foreach (string nome in listaAlunos) {
if (nomeAluno == nome) {
alunoEncontrado = true;
}
}
if (alunoEncontrado) Console.WriteLine ($"O aluno {nomeAluno} foi encontrado na lista.");
else Console.WriteLine ($"O aluno {nomeAluno} não foi encontrado na lista.");