Ir ao conteúdo
  • Cadastre-se
Mpixell

C problema procurar um nome no vetor

Recommended Posts

Eu estou a tentar fazer um programa que peça 5 nomes, e os armazene num vetor.

Depois o programa deverá pedir para o utilizador introduzir um nome para ver se esse nome está no vetor, mas não estou a conseguir.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL,"Portuguese");
    int i;
    int encontrado=0;
    char nomes[5][20];
    char nome_P[1][20];
    for(i=0;i<5;i++)
    {
        printf("Insira o %dº Nome: ",i+1);
        scanf("%s",&nomes);
    }
    printf("Pesquisar\n\n");
    printf("Insira no mome que deseja procurar: ");
    scanf("%s",&nome_P);
    while (i < 5 && encontrado==0)
    {
        if (nomes == nome_P
        {
            encontrado = 1;
        } 
        else
        {
            i++;
        }
    }
    if (encontrado==1) 
        {
        printf ("Nome encontrado\n");
        } 
        else 
        {
        printf ("Nome não encontrado\n");
        }
}

gostaria que alguem me pudesse ajudar com isto. obrigado

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola @Mpixell !

Você postou o código inteiro e isso é muito ruim porque a questão diz respeito uma das tarefas do programa e não a todas elas. Então tente fazer outro programa que busca uma palavra em um vetor tão somente isso, depois poste aqui usando o tag <> ou melhor hospede o arquivo no Drop Box. As vezes e melhor fazer tarefas e programas separados para depois juntar tudo em um só. Com isso você aprende mais.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mauro Britivaldo

Eu estava sem tempo e não pensei bem no que estava a fazer quando coloquei o código todo,peço desculpas.

Agora que tive mais tempo modifiquei o post apenas com a parte que ainda dá erro

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mpixell      para compara string você precisa usar o comando 

strcmp(primeira_string,segunda_string)==0

se for zero então é igual, qualquer outro valor é diferente .     então esse seu código ficaria assim :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <locale.h>
int main()
{
    int i,encontrado=0;
    char nomes[5][20],nome_P[1][20];
    setlocale(LC_ALL,"");/*deixando assim ele pega o idioma automaticamente */
    for(i=0;i<5;i++)
    {
        printf("Insira o %dº Nome: ",i+1);
        fflush(stdin);/* se usar gets precisa desse flush en todas leitura de teclado */
        scanf("%s",&nomes[i]);/* precisa informar em qual posição do vetor */
    }
    printf("Pesquisar\n\n");
    printf("Insira no mome que deseja procurar: ");
    /*scanf("%s",&nome_P);/* scanf só pegar o primeiro nome da frase */
    fflush(stdin);/* para usar gets() precisa desse flush(stdin) */
    gets(nome_P);/* gets() pega a frase toda */
    i=0;/* precisa zerar essa variável */
    while (i < 5 && encontrado==0)
    {
        if (strcmp(nomes[i],nome_P[0])==0)/* para compara string */
        {
            encontrado = 1;
            break;
        }
        i++;
    }
    if (encontrado==1)
    {
        printf ("Nome encontrado\n");
    }
    else
    {
        printf ("Nome não encontrado\n");
    }
    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Este comando

11 minutos atrás, devair1010 disse:

gets(nome_P);/* gets() pega a frase toda */

esta a dar-me o seguinte erro

[Error] cannot convert 'char (*)[20]' to 'char*' for argument '1' to 'char* gets(char*)'

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mpixell     coloque assim então :

gets(nome_P[0]);

no entanto aqui no codeblocks não está dando nenhum erro .   qual compilador você está usando ?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
16 horas atrás, Mpixell disse:

Eu estava sem tempo e não pensei bem no que estava a fazer quando coloquei o código todo,peço desculpas.

Não há o que se desculpar. Entenda a intenção ainda é aconselhar que siga resolvendo os exercício muito longos em partes menores. "Dividir e Conquistar" você já deve ter ouvido isso.

GC!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×