Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal, Boa tarde :)

Bom eu preciso mostrar quantas a palavra 'de' aparece na frase

 

int main()
{
      char frase[25] ;
      int i , cont=0;

      printf("Digite uma frase qualquer em letras minusculas: ");
      scanf(" %[^\n]",frase);

      for(i=0; i<strlen(frase); i++)
      {
            if ( (frase[i] == 'd') && (frase[i+1] == 'e') ) cont++;
      }

      printf("\n\nA palavra 'de' aparece %d vezes na frase.",cont);

}

 

 

adicionado 6 minutos depois

Bom galera consegui, porém não sei se ficou muito correto, porém está funcionando 

int main()
{
      char frase[100] ;
      int i , cont=0;

      printf("Digite uma frase qualquer: ");
      scanf(" %[^\n]",frase);

      strlwr(frase);

      for(i=0; i<strlen(frase); i++)
      {
            if ( (frase[i] == 'd') && (frase[i+1] == 'e') )
            {
                 if(frase[i+2] == ' ' || frase[i+2] == '\0') cont++;
            }
      }

      printf("\n\nA palavra 'de' aparece %d vezes na frase.",cont);
}

 

  • Curtir 1
Postado

Fiz usando strtok() usando o caractere de espaço " " como separador de tokens na string, assim ele separa cada palavra da frase (nesse caso a função substitui o espaço ' ' pelo caractere nulo '\0', e retorna o endereço de memória do início da palavra). E então basta usar strcmp para comparar a palavra encontrada com a string "de", e incrementar o contador se forem iguais.

 

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

int main()
{
    char frase[100], *palavra;
    int cont=0;
    
    printf("Digite uma frase qualquer em letras minusculas: ");
    scanf(" %99[^\n]", frase);
    
    for (palavra = strtok(frase, " "); palavra != NULL; palavra = strtok(NULL, " ")){
        if (strcmp(palavra, "de") == 0){
            cont++;
        }
    }
    
    printf("\n\nA palavra 'de' aparece %d vezes na frase.", cont);
    
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado

@isrnick Cara não sei se isso é assunto pra outro tópico, mas e quando você não a palavra? , por exemplo a pessoa digita uma frase e após isso digita uma palavra pra ver quantas vezes apareceu na frase ou se apareceu , como fazer?

Postado

Usando strtok fica fácil:

 

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

int main()
{
    char frase[100], p_busca[100], *palavra;
    int cont=0;
    
    printf("Digite uma frase qualquer em letras minusculas: ");
    scanf(" %99[^\n]", frase);
    printf("Digite uma palavra qualquer em letras minusculas: ");
    scanf(" %99s", p_busca);
    
    for (palavra = strtok(frase, " "); palavra != NULL; palavra = strtok(NULL, " ")){
        if (strcmp(palavra, p_busca) == 0){
            cont++;
        }
    }
    
    printf("\n\nA palavra '%s' aparece %d vezes na frase.", p_busca, cont);
    
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado
2 minutos atrás, MatheusINF disse:

@isrnick Cara realmente com o strtok() , consigo fazer o resto da lista tranquilo , uma pena eu não saber dele antes ahahahaha, muito obrigado cara ^^

Não sei se deu pra entender como ele funciona, é meio complicado, tem que passar a string como parâmetro na primeira chamada da função, e depois passar NULL como parâmetro nas chamadas seguintes da função para continuar procurando do ponto onde parou na mesma string que chamou na primeira vez.

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!