Ir ao conteúdo

Posts recomendados

Postado

Prezados, boa noite.

 

Preciso fazer um programa que é: "calcular quantas vezes cada palavra aparece em uma string", pensei em diversas formas e não obtive sucesso com o que tenho em mente.

 

Meu programa divide a frase em várias quando se depara com um espaço digitado pelo usuário. Porém, como posso fazer para ARMAZENAR essas palavras que dividi em uma outra string?

 

 

Desde já, obrigado.

 

Segue o código que fiz até agora:

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

int main(void) 
{
    char frase[80];
	printf("\nDigite: ");
	fgets(frase,80,stdin);
    int tamanho = strlen(frase); 
    char *token = strtok(frase, " ");
    for (int i = 0; i < tamanho; i++) {
        printf(token[i] == 0 ? "\\0" : "%c", token[i]);
    }
    while(token != NULL) {
        printf("\n%s", token);
        token = strtok(NULL, " ");
    }
}

 

 

  • Obrigado 1
Postado

@matheuscrluiz      para quê colocar as palavras em outra string ?   você pode armazenar as palavras em huma matriz de char e depois pode compara-las para saber quais as que se repetiram na frase ,  então seu código poderia ser assim  :

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

int main(void){
    char frase[80],mat[10][1][20],
         aux[20], outraString[80];
    int j,k=0,w=0,l=0;
    strcpy(outraString,"");
    printf("\nDigite : ");
    fgets(frase,80,stdin);/* fgets pega assim : frase com todas as palavras\n\0 */
    int tamanho = strlen(frase);
    while(frase[k]!='\n'){/* pegando cada palavra da frase */
        aux[w]=frase[k];
        if(frase[k] == ' ' || frase[k+2] == '\0' ){
            if(frase[k+2]=='\0')w++;
            aux[w]='\0';
            strcat(outraString,aux);  /* coloca cada palavra na outra string    */
            strcat(outraString," . ");/* se quiser pode delar essa linha        */
            strcpy(mat[l][0],aux);    /* armazenar as strings no c              */
                                      /* no c++ basta fazer mat[l][0]=aux       */
            w=-1;                     /* para voltar a zero                     */
            l++;
        }
        k++;
        w++;
    }
    printf("Conte%cdo da Matriz :\n",163);
    for(j=0;j<l;j++)printf("%s ",mat[j][0]);
    printf("\n\nA Outra String -> %s\n",outraString);
    /*char *token = strtok(frase, " ");
    for (int i = 0; i < tamanho; i++) {
        printf(token[i] == 0 ? "\\0" : "%c", token[i]);
    }*/
    /*while(token != NULL) {
        printf("\n%s", token);
        token = strtok(NULL, " ");
    }*/
    printf("\n\n\n");
    return 0;
}

 

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