Ir ao conteúdo

Posts recomendados

Postado

Olá. Possuo uma atividade que o intuito é:

-O usuário deve digitar uma frase e depois uma palavra;

-Deve-se ler quantas vezes essa palavra se repete dentro da frase;

*Condições: Considerar letras maiúsculas e minúsculas como diferentes e não recorrer à função gets.

Eu comecei o código, mas estou com dificuldade em proceder, pois está dando erro na leitura da palavra e não estou conseguindo encontrar o meu erro, apesar de saber que está na parte final do código.

 

Código: 

 

<#include <stdio.h>
#include <string.h>
#define MAX 100

int conta ( char frase [], char palavra [] )
{
   int i, count = 0;
   for( i=0; i<strlen(frase); i++ )
    {
        while( frase[i] == palavra [i] && i < strlen(palavra))
            count++;

    }
   return count;

}
main()
{
      char f[MAX];
      char p;
      printf("Escreva uma frase: ");
      scanf ("%s", &f);
      printf("\nEscreva uma palavra: ");
      scanf("%c", &p);
     

      printf("A palavra %s apareceu %d vez na frase ", p, conta);
}>
 

  • Obrigado 1
Postado

@Carlos_Pereira_22        seu código tem erros de syntaxe ,  e existe muitos modos de fazer , então um modo seria assim :

#include <stdio.h>
#include <string.h>
#define MAX 100
int conta ( char frase [], char palavra [] )
{
    int i,k=0, count = 0;
    char auxiliar[20];
    for( i=0; i<strlen(frase)+1; i++ )
        if(frase[i] != ' ' && frase[i] != '\0' )
        {
            auxiliar[k] = frase[i];     //  pega uma palavra contida na frase
            k++;
        }
        else
        {
            auxiliar[k] = '\0';         //  marca o fim da string para poder comparar
            k = 0;                      //  volta a zero para pegar outra palavra da frase
            if(strcmp(auxiliar , palavra ) == 0 )
                count++;                //  compara as strings e incrementa se forem iguais
        }
    return count;
}
int main()
{
    char f[MAX];                        //  esse certo , char com colchetes e valor maior que um dentro é uma string
    char p[20];                         //  char sem colchetes só armazena hum caractere
    printf("Escreva uma frase: ");
                                        //  scanf ("%s",f);//Ler string não precisa do endereço  &
    fgets(f,99,stdin);
    f[strlen(f)-1]='\0';
    printf("\nEscreva uma palavra: ");
                                        //  scanf("%s",p);//palra é string e não caractere
    fgets(p,19,stdin);
    p[strlen(p)-1]='\0';

    printf("A palavra %s apareceu %d vez na frase ", p, conta(f,p));
    return 8;
}

 

  • Curtir 2
Postado

@Carlos_Pereira_22   sim   ,   você pode usar qualquer outro comando que quiser , apenas que o fgets pega todos os caracteres digitados e também pega o newline  e alem disso ele acrescenta o '\0'  finalizador de strings , e por isso a linha abaixo dele serve exatamente para remover esse barra zero ,  e usando outro comando precisa modificar isso também ,  e você pode usar até a getchar  ,  getch , fgetc , getc , scanf , getche , e cada uma dessas funções  funcionam de um modo diferente um do outro , mas todas cumprem o seu papel , que é pegar o que foi digitado e colocar na variável referente , e o restante do código funcionaria da mesma forma .

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