Ir ao conteúdo
  • Cadastre-se

C Verificar se a palavra está contida na string


Nicholas_R.

Posts recomendados

Boa tarde, estou tendo dificuldade em fazer um código, utilizando ponteiro ( ou apontadores), para verificar se uma palavra está contida num determinado texto. Tanto os textos e as palavras são pré-determinadas pelo programa, como mostrado a seguir:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define bool int
#define TRUE 1
#define FALSE 0
#define MAX_WORD_LENGTH 21
#define MAX_TEXT_LENGTH 81
#define MAX_WORD 20

int escolha_frase(){
    int num_frase, num_palavra;

    printf("Escolha umas das seguintes frases: ");
    printf("1-A string that contains a dog and a cat");
    printf("2-A string that contains camel and mouse");
    printf("3-The dog was eating with the horse");
    printf("4-The camel drunk all the water");
    printf("5-The mouse entered into the pipe");
    printf("6-Uma string que pode conter dog ou camel");
    printf("7-The horse is bigger than the dog");
    printf("Frase: "); scanf(" %d", &num_frase);

    if (num_frase<1 && num_frase>7)
    {
        printf("Erro: Frase não encontrada\n");
        exit(1);
    }
    

    return num_frase;
}
int escolha_palavra(){
    int num_frase, num_palavra;

    printf("Escolha uma das seguintes palavras: ");
    printf("1-dog");
    printf("2-horse");
    printf("3-cat");
    printf("4-mouse");
    printf("5-camel");
    printf("6-pig");
    printf("Palavra: "); scanf(" %d", &num_palavra);

    if (num_palavra<1 && num_palavra>7)
    {
        printf("Erro: palavra não encontrada\n");
        exit(1);
    }

    return num_palavra;
}
void ver_se_contem (char *frase_actual, char *palavra_actual){
    char result;

    printf("Frase: %s\n", frase_actual);
    printf("Palavra: %s\n", palavra_actual);
    result = strstr(frase_actual, palavra_actual);

    if (result)
    {
        printf("Sim, a palavra está contida da frase\n");
    }
    else
    {
        printf("Não está contida na frase\n");
    }
    
    
}

void main() {
    char frase1 [MAX_TEXT_LENGTH] = "A string that contains a dog and a cat";
    char frase2 [MAX_TEXT_LENGTH] = "A string that contains camel and mouse";
    char frase3 [MAX_TEXT_LENGTH] = "The dog was eating with the horse";
    char frase4 [MAX_TEXT_LENGTH] = "The camel drunk all the water";
    char frase5 [MAX_TEXT_LENGTH] = "The mouse entered into the pipe";
    char frase6 [MAX_TEXT_LENGTH] = "Uma string que pode conter dog ou camel";
    char frase7 [MAX_TEXT_LENGTH] = "The horse is bigger than the dog";
    char palavra1 [MAX_WORD_LENGTH] = "dog";
    char palavra2 [MAX_WORD_LENGTH] = "horse";
    char palavra3 [MAX_WORD_LENGTH] = "cat";
    char palavra4 [MAX_WORD_LENGTH] = "mouse";
    char palavra5 [MAX_WORD_LENGTH] = "camel";
    char palavra6 [MAX_WORD_LENGTH] = "pig";
    char *frase_ptr [MAX_WORD]; // para apontar a frases
    char *pal_ptr [MAX_WORD]; // para apontar a palavras
    char ** frase, ** palavra;
    char palavra_actual [MAX_TEXT_LENGTH];
    char frase_actual [MAX_TEXT_LENGTH];
    int num_frase, num_palavra; // para conter a escolha do util.

    frase_ptr [0] = frase1;
    frase_ptr [1] = frase2;
    frase_ptr [2] = frase3;
    frase_ptr [3] = frase4;
    frase_ptr [4] = frase5;
    frase_ptr [5] = frase6;
    frase_ptr [6] = frase7;
    pal_ptr [0] = palavra1;
    pal_ptr [1] = palavra2;
    pal_ptr [2] = palavra3;
    pal_ptr [3] = palavra4;
    pal_ptr [4] = palavra5;
    pal_ptr [5] = palavra6;
    while (1) {
        
        num_frase = escolha_frase();
        num_palavra= escolha_palavra();

        frase = &frase_ptr[num_frase-1];
        palavra = &pal_ptr[num_palavra-1];
        
        for (int i = 0; i < num_frase-1; i++)
        {
            frase_actual[i] = **frase[i];
        }
        for (int i = 0; i < num_palavra-1; i++)
        {
            palavra_actual[i] = **palavra[i];
        }
        
        ver_se_contem (frase_actual, palavra_actual);
    }
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...