Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Mário Vitorino

Substituir palavra numa frase

Recommended Posts

Programa que receba uma frase e uma palavra.Caso a frase tenha a palavra escola, substitua pela palavra digitada.

 

Exemplo:

Frase:Eu moro perto de uma escola. Mas essa escola nao é a melhor

 

palavra:padaria.

 

resposta:Eu moro perto de uma padaria. Mas essa padaria nao é a melhor.

 

So consigo fazer ate ai:

qual a lógica que devo usar?

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char frase[100],palavra[15];
    int tam,i;
    printf("Digite uma frase(maximo 100 caracteres): ");
    gets(frase);
    printf("Digite uma palavra(maximo 15 caracteres): ");
    gets(palavra);

    tam=strlen(frase);

    for(i=0;i<tam;i++){
        if((frase=='e')&&(frase[i+1]=='s')&&(frase[i+2]=='c')&&(frase[i+3]=='o')&&(frase[i+4]=='l')&&(frase[i+5]=='a'))

    }


    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fique a vontade para modificar e otimizar...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *substitui_pFrase(char *, const char *, const char *);
int main()
{
    char frase[100],palavra[15], palavraNova[15], novafrase[125];
    palavraNova[0] = '\0';

    printf("Digite uma frase(maximo 100 caracteres): ");
    gets(frase);
    printf("Digite uma palavra(maximo 15 caracteres): ");
    gets(palavra);
    printf("Digite uma palavra nova(maximo 15 caracteres): ");
    gets(palavraNova);

    if(substitui_pFrase(frase,palavra,palavraNova)){
        strcpy(novafrase,substitui_pFrase(frase,palavra,palavraNova));
        printf("Nova frase: %s\n",novafrase);
    }
    else printf("Palavra: %s nao encontrada na frase!\n",palavra);

    return 0;
}
/* Frase: a frase que contém a palavra para ser substituída
   palavra: palavra a ser substituída
   novaPalavra: palavra que substituirá */
const char *substitui_pFrase(char *frase, const char *palavra, const char *novaPalavra){
    register int i;
    bool found = false;
    char result[strlen(frase)-strlen(palavra)+strlen(novaPalavra)], rest[128];
    int len = strlen(frase), lenstrike = strlen(palavra), j = 0, k = 0, r = 0;

    result[0]  = '\0';
    rest[0] = '\0';
    for(i = 0; i < len; i++){
            //Procurar palavra a partir de i
            for(j = i, k = 0; frase[j] == palavra[k] && k < lenstrike; j++, k++){}
            //Caso a palavra foi encontrada
            if(k >= lenstrike-1){
                //Obter resto da frase
                for(r = 0; j < len; r++, j++){
                    if(frase[j] == '\0')
                        rest[r] = ' ';
                    else
                        rest[r] = frase[j];
                }
                rest[r] = '\0';
                //Copiar frase antes da palavra a ser trocada
                for(j = 0; j < i; j++){
                    result[j] = frase[j];
                }
                result[strlen(result)] = '\0';
                //Copiar nova palavra para frase
                for(k = 0; k <= strlen(novaPalavra); k++){
                    result[j+k] = novaPalavra[k];
                }
                strcat(result,rest);
                found = true;
                break;
            }else j = 0;
    }
    if(!found) return NULL;
    result[strlen(result)] = '\0';
    return result;
}

 

  • Curtir 1

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
Entre para seguir isso  





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

×