Ir ao conteúdo

Posts recomendados

Postado

Prezados, Boa noite.

 

Estou tentando resolver este problema, mas não faço a menor ideia de como resolve-lo 100%. Tentei fazer o melhor que pude, meu código não faz o que se pede por eu não saber como resolver, porém, tentei ir o mais longe que consegui. Estou há dias tentando resolver e não consigo sair do lugar mais, qualquer ajuda será muito bem vinda. Segue o código abaixo:

 

E desde já, muito obrigado.

 

Explicando meu código para mais fácil compreensão de todos:

 

O melhor que consegui fazer foi contar a quantidade de palavras digitadas em uma frase a partir dos espaços dados pelo usuário. Porém, não sei como comparar as palavras e verificar se são iguais. Com isso, meu programa só conta a quantidade de palavras.

 

Exemplo: "Gostaria de sua ajuda"

              Palavras digitadas: 4.

 

 

Obs:  Sei que no "soma+1" poderia ter inicializado a variavel contadora com 1 ao invés de 0, mas preferi somar 1 ao final da frase por questão de gosto somente. Se isso interferir em algo, sintam-se livres para altera-lo.

 

Att; Matheus

/* Escrever um programa em C que calcule a frequência de uso de cada palavra dentro de uma cadeia de caracteres que possui diversas palavras. Considerar o tamanho máximo da cadeia como sendo de 80 colunas. */

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


int main (void)
{
	char frase[80];
	int i;
	int soma =0;

	printf("\nDigite: ");
	fgets(frase, 80, stdin);

	for(i=0;i<strlen(frase);i++)
		{
			if(frase[i] == ' ')
				{
					soma++; /*soma a quantidade de espaços digitados na frase */
				}
		}
	printf("\nA quantida de palavras digitadas foi de: %d", soma+1);

	/*(soma+1) pois soma todos os espaços antes da ultima palavra e a soma tb */

	return 0;
}

 

  • Obrigado 1
Postado

@matheuscrluiz    seu código estás bom , faltou apenas verificar cada palavra da frase e marcar as que se repetem , e depois imprimir quais as palavras tem na frase e a quantidade vezes que las repetiram , então creio que seu código poderia ser assim  :

/* Escrever um programa em C que calcule a frequência de uso de cada palavra dentro de uma cadeia de caracteres que possui diversas palavras. Considerar o tamanho máximo da cadeia como sendo de 80 colunas. */

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define pausar for(f=0;f<50000000;f++);
#define qtd 280
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{black,blue,green,cyan,red,magenta,brown,lightgray,darkgray,   /* nome das cores */
lightblue,lightgreen,lightcyan,lightred,lightmagenta,yellow,white} colors;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = lightgray;

void textcolor_2 (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
int main(){
    char frase[qtd],   aux[20],
         matriz[20][1][20]={0};
    int i,soma=0,w=0,k ,
        vetor[80]={0},f;
    printf("Digite : ");
    fgets(frase, qtd, stdin);
    for(i=0; i<strlen(frase); i++){
        aux[w]=frase[i];
        if(frase[i] == ' ' || frase[i] == '\n'){
            aux[w]='\0';
            strcpy(matriz[soma][0],aux);
            soma++; /*soma a quantidade de espaços digitados na frase */
            w=-1;
        }
        w++;
    }
    printf("\nA quantidade de palavras digitadas foi de : %d\n\n", soma);
    for(w=0;w<soma;w++){                             /* comparando as palavras da frase            */
        if( ! vetor[w] )vetor[w]++;                  /* inicia cada posição do vetor com valor hum */
        for(i=0;i<soma;i++){
            if(strcmp(matriz[w][0],matriz[i][0])==0 && w != i ){
                vetor[w]++;
                strcpy(matriz[i][0],"");
            }
        }
    }
    printf("\n\n");
    for(w=0;w<soma;w++)
        if(strcmp(matriz[w][0],"")!=0){
        textcolor_2(11,0);
        printf("A Palavra ");
        textcolor_2(10,12);
        printf("%10s ",matriz[w][0]);
        textcolor_2(11,0);
        printf(" Apareceu ");
        textcolor_2(12,15);
        if(vetor[w]==2)textcolor_2(15,12);
        if(vetor[w]==3)textcolor_2(14, 9);
        if(vetor[w]==4)textcolor_2(13,8);
        if(vetor[w] >4)textcolor_2(12,8);
        printf("%2d ",vetor[w]);
        textcolor_2(11,0);
        printf(" Vez Na Frase\n");
    }

    printf("\n   Tecle . . .  !\n\n");
    while( ! kbhit() ){                  /* huma animação                              */
        printf("      | \r"   );pausar;
        printf("      / \r"   );pausar;
        printf("      - \r"   );pausar;
        printf("      %c\r",92);pausar;
    }
    printf("\n\n\n");
    textcolor_2(7,0);
    return 0;
}

 

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