Ir ao conteúdo
  • Cadastre-se

Substituir palavra numa frase


Posts recomendados

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;
}

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!