Advertisement
Deerenaros

Word, which meeting in text maximum.

May 23rd, 2012
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. //Написать программу, считывающую символьный файл в динамическую память
  2. //целиком пословно, формируя массив указателей на слова,
  3. //Вывести слово, которое встречается в файле чаще всего
  4.  
  5. #include <stdio.h>
  6.  
  7. #define MAX_STR 32
  8. #define MAX_ARR 512
  9.  
  10. bool addOrInc(char *string, char **arrOfStrings, int *n);
  11. bool compare(char *a, char *b);
  12. int max(int arr[], int size); //не написан
  13.  
  14. int main(){
  15.     int ch; int size = 0; int n[MAX_ARR];
  16.     char *s = malloc(sizeof(char)*MAX_STR);
  17.     char *strs[MAX_ARR];
  18.    
  19.     while(size < MAX_ARR) n[size++] = 0;
  20.     while(size >= 0) strs[size--] = NULL;
  21.    
  22.     while((ch = getch()) != EOF){
  23.         int i = 0;
  24.         while(ch != ' ' && ch != '.' && ch != '(' && ch != ')'){
  25.             s[i++] = ch;
  26.             ch = getch();
  27.         }s[i] = 0;
  28.         size += addOrInc(s, strs, n);
  29.     }
  30.    
  31.     printf("%s\n", strs[max(n, size)]);
  32.    
  33.     //ещё не плохо было бы разделигировать память, но это
  34.     //пусть делает Денис, то есть, я имел ввиду, Никита =)
  35.    
  36.     return 0;
  37. }
  38.  
  39. bool addOrInc(char *string, char *arrOfStrings[], int *n){
  40.     for(int i = 0; i < MAX_ARR; i++){
  41.         if(compare(string, arrOfStrings[i])){
  42.             n[i]++;
  43.            
  44.             return false;
  45.         }else if(arrOfStrings[i] == NULL){
  46.             n[i]++;
  47.             arrOfStrings[i] = s;
  48.             s = malloc(sizeof(char)*MAX_STR);
  49.            
  50.             return true;
  51.         }
  52.     }
  53. }
  54.  
  55. bool compare(char *a, char *b){
  56.     int i = 0;
  57.     while(a[i] && a[i] == b[i]) i++;
  58.  
  59.     return a[i] == b[i];
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement