Faça um programa para ler uma tabela contendo os nomes dos alunos de uma turma de 5 alunos. O programa deve solicitar ao usuário os nomes do aluno, sempre perguntando se ele deseja inserir mais um nome na lista. Uma vez lidos todos os alunos, o usuário irá indicar um nome que ele deseja verificar se está presente na lista, onde o programa deve procurar pelo nome (ou parte deste nome) e se encontrar deve exibir na tela o nome completo e o índice do vetor onde está guardado este nome.

Passo 1

A questão pede um programa que use vetores, laços de repetição e busca de substring em strings para: ler até 5 nomes de alunos, perguntando sempre ao usuário se ele quer inserir mais um, e depois pesquisar um termo no vetor e exibir cada nome completo e índice onde o termo (ou parte dele) for encontrado.
Precisamos de um vetor de 5 strings, uma variável contadora do número de nomes lidos, um laço para ler nome por nome (até 5 ou enquanto o usuário desejar), e uma maneira de buscar substring em cada string do vetor.

Passo 2

Definimos um vetor de 5 strings (por exemplo, em C: char nomes[5][100];) e uma variável int qtd = 0; para rastrear quantos nomes já foram inseridos.

Passo 3

Usamos um laço while(qtd < 5) que a cada iteração pede nomes[qtd], incrementa qtd e então pergunta “Deseja inserir mais um nome? (S/N)”. Se a resposta for diferente de ‘S’ ou ‘s’, interrompemos o laço.

Passo 4

Após a leitura, pedimos ao usuário uma string de busca, por exemplo busca[100].

Passo 5

Percorremos o vetor nomes de índice i = 0 até i < qtd. Para cada nomes[i], usamos strstr(nomes[i], busca) para verificar se a substring existe. Se strstr retornar não nulo, exibimos nomes[i] e o índice i. Se, ao final, nenhuma ocorrência for encontrada, informamos “Nome não encontrado.”

Resposta

Segue um exemplo de implementação em C:
#include <stdio.h>
#include <string.h>
int main() {
char nomes[5][100];
int qtd = 0;
char resp;
// Leitura dos nomes
while (qtd < 5) {
    printf("Digite o nome do aluno %d: ", qtd + 1);
    fgets(nomes[qtd], sizeof(nomes[qtd]), stdin);
    nomes[qtd][strcspn(nomes[qtd], "\n")] = '\0'; // remove \n
    qtd++;

    if (qtd == 5) break;
    printf("Deseja inserir mais um nome? (S/N): ");
    scanf(" %c", &resp);
    getchar(); // consome o \n
    if (resp != 'S' && resp != 's') break;
}

// Leitura do termo de busca
char busca[100];
printf("\nDigite o nome (ou parte) para buscar: ");
fgets(busca, sizeof(busca), stdin);
busca[strcspn(busca, "\n")] = '\0';

// Busca e exibição
int encontrou = 0;
for (int i = 0; i < qtd; i++) {
    if (strstr(nomes[i], busca) != NULL) {
        printf("Encontrado: %s  (índice %d)\n", nomes[i], i);
        encontrou = 1;
    }
}
if (!encontrou) {
    printf("Nome não encontrado.\n");
}

return 0;
}

Exercícios relacionados