Faça um programa que preencha um vetor com os nomes digitados pelo usuário (no máximo 100 nomes). Em seguida, permite a realização de várias pesquisas (utilizar o algoritmo de busca seqüencial sobre o vetor resultante, retornando qual é a posição (ordem de entrada) do nome pesquisa ou uma mensagem explicativa quando ele não for encontrado. Tanto a entrada quanto a pesquisa serão finalizadas se o usuário digitar “FIM”.
Passo 1
O enunciado pede para criar um vetor de até 100 nomes digitados pelo usuário, usando o algorítmo de busca seqüencial para responder a várias pesquisas. Em ambas as fases (leitura de nomes e de pesquisas) o laço deve parar se o usuário digitar “FIM”.
Passo 2
Reservamos um vetor bidimensional de caracteres para armazenar até 100 strings e um contador para controlar quantos nomes já foram lidos. Em seguida, fazemos um laço de leitura: lemos cada nome e, se for diferente de “FIM” e ainda não alcançamos 100 nomes, armazenamos no vetor e incrementamos o contador.
Passo 3
Depois de preencher o vetor, iniciamos o segundo laço para as pesquisas: lemos cada termo de pesquisa e, se for “FIM”, encerramos o programa. Caso contrário, executamos a busca seqüencial no vetor de nomes, comparando cada posição com a string pesquisada.
Passo 4
Na busca seqüencial, percorremos o vetor do índice 0 até n-1. Se encontrarmos uma correspondência exata (strcmp == 0), guardamos a posição (i+1) e interrompemos o laço. Se o laço terminar sem achar, mantemos um indicador de “não encontrado”.
Passo 5
Por fim, dependendo de termos encontrado o nome ou não, imprimimos a mensagem correspondente: “Nome encontrado na posicao X” (onde X é a ordem de entrada, começando em 1) ou “Nome nao encontrado”.
Resposta
#include <stdio.h>
#include <string.h>
#include <string.h>
#define MAX_NOMES 100
#define MAX_TAM 100
#define MAX_TAM 100
int main() {
char nomes[MAX_NOMES][MAX_TAM];
char consulta[MAX_TAM];
int n = 0;
char nomes[MAX_NOMES][MAX_TAM];
char consulta[MAX_TAM];
int n = 0;
// Leitura dos nomes
while (n < MAX_NOMES) {
scanf("%99s", consulta);
if (strcmp(consulta, "FIM") == 0) {
break;
}
strcpy(nomes[n], consulta);
n++;
}
// Leitura e processamento das pesquisas
while (1) {
scanf("%99s", consulta);
if (strcmp(consulta, "FIM") == 0) {
break;
}
int pos = -1;
for (int i = 0; i < n; i++) {
if (strcmp(consulta, nomes[i]) == 0) {
pos = i + 1; // posição em ordem de entrada
break;
}
}
if (pos != -1) {
printf("Nome encontrado na posicao %d\n", pos);
} else {
printf("Nome nao encontrado\n");
}
}
return 0;
}