Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Написать программу, считывающую символьный файл в динамическую память
- //целиком пословно, формируя массив указателей на слова,
- //Вывести слово, которое встречается в файле чаще всего
- #include <stdio.h>
- #define MAX_STR 32
- #define MAX_ARR 512
- bool addOrInc(char *string, char **arrOfStrings, int *n);
- bool compare(char *a, char *b);
- int max(int arr[], int size); //не написан
- int main(){
- int ch; int size = 0; int n[MAX_ARR];
- char *s = malloc(sizeof(char)*MAX_STR);
- char *strs[MAX_ARR];
- while(size < MAX_ARR) n[size++] = 0;
- while(size >= 0) strs[size--] = NULL;
- while((ch = getch()) != EOF){
- int i = 0;
- while(ch != ' ' && ch != '.' && ch != '(' && ch != ')'){
- s[i++] = ch;
- ch = getch();
- }s[i] = 0;
- size += addOrInc(s, strs, n);
- }
- printf("%s\n", strs[max(n, size)]);
- //ещё не плохо было бы разделигировать память, но это
- //пусть делает Денис, то есть, я имел ввиду, Никита =)
- return 0;
- }
- bool addOrInc(char *string, char *arrOfStrings[], int *n){
- for(int i = 0; i < MAX_ARR; i++){
- if(compare(string, arrOfStrings[i])){
- n[i]++;
- return false;
- }else if(arrOfStrings[i] == NULL){
- n[i]++;
- arrOfStrings[i] = s;
- s = malloc(sizeof(char)*MAX_STR);
- return true;
- }
- }
- }
- bool compare(char *a, char *b){
- int i = 0;
- while(a[i] && a[i] == b[i]) i++;
- return a[i] == b[i];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement