Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- /*** exercicio 1.1 ***/
- typedef struct
- {
- char *word ;
- int oco ;
- } registo;
- /*** exercicio 1.2 ***/
- registo *analisarFicheiro(FILE *ficheiro, int *num_palavras)
- {
- registo *palavras ;
- char palavra[100] ;
- int i = 0 , flag = 0 ;
- while (fscanf (ficheiro , "%s" , palavra) != EOF)
- {
- if (*num_palavras == 0)
- {
- palavras = (registo*) malloc (sizeof(registo)) ;
- palavras[0].word = (char*) malloc (strlen(palavra) + 1);
- strcpy (palavras[0].word , palavra) ;
- palavras[0].oco = 1 ;
- *num_palavras += 1 ;
- }
- else
- {
- flag = 0 ;
- for (i = 0 ; i < *num_palavras ; i++)
- {
- if (strcmp (palavras[i].word , palavra) == 0) palavras[i].oco += 1 ;
- else flag++ ;
- }
- if (flag == *num_palavras)
- {
- palavras = (registo*) realloc (palavras , (*num_palavras + 1) * sizeof(registo));
- palavras[*num_palavras].word = (char*) malloc (strlen(palavra) + 1);
- strcpy (palavras[*num_palavras].word , palavra) ;
- palavras[*num_palavras].oco = 1 ;
- *num_palavras += 1 ;
- }
- }
- }
- return palavras ;
- }
- /*** exercicio 1.3 ***/
- void gerarRelatorio(FILE *ficheiro, registo *resultados, int num_palavras)
- {
- int i ;
- fprintf (ficheiro , "Palavras encontradas:\n--------------------\n") ;
- for (i = 0 ; i < num_palavras ; i++) fprintf (ficheiro , "%d: %s - %d\n" , i + 1 , resultados[i].word , resultados[i].oco) ;
- }
- /*** exercicio 1.4 ***/
- int main()
- {
- char entrada[50] , saida[50] ;
- printf ("Ficheiros de entrade e saída: ") ;
- scanf ("%s %s" , entrada , saida) ;
- FILE *f = fopen (entrada , "r") , *p = fopen (saida , "w") ;
- registo *palavras = NULL ;
- int nPal = 0 , i ;
- if (f == NULL)
- {
- printf ("Ficheiro não encontrado.\n") ;
- return -1 ;
- }
- palavras = analisarFicheiro(f , &nPal) ;
- gerarRelatorio(p , palavras , nPal) ;
- fclose (f) ;
- fclose (p) ;
- return 0 ;
- }
Advertisement
Add Comment
Please, Sign In to add comment