Форум программистов, компьютерный форум CyberForum.ru

Составить словарь всех слов, встречающихся в заданном текстовом файле. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы http://www.cyberforum.ru/cpp-beginners/thread80427.html
Дано натуральное число n. Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. (Определить процедуру, позволяющую распознать простые числа).
C++ структуры описать структуру с именем student, содержащую следующие поля 1. фамилия и инициалы 2. номер группы 3 успеваемость(массив из 5 элементов) Написать программу, выполняющие следующие действия 1. ввод с клавиатуры данных в массив, состоящих из 10 структур типа student. записи должны быть упорядочены по афавиту 2. вывод на дисплей фамилий и номер группы для всех студентов, имеющих хотя бы одну... http://www.cyberforum.ru/cpp-beginners/thread80416.html
Вопрос по Borland C++ 5.02 C++
Здравствуйте! Я решил заняться программированием на языке с++, для этого я выбрал Borland C++ 5.02. Вопрос такой: Почему очень мало литературы по Борланд С++ (не билдер)? Этот компилятор не популярный в связи с чем если это так? http://www.avege.ru/russian/borland/index.shtml - Вот хорошее описание установки и начало работы! Разве нету учебников по типу гид по программе? Я человек новый в этом...
C++ Задача на рекурсию
Дано натуральное число n. Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. (Определить процедуру, позволяющую распознать простые числа). Может кто мне обьяснить как ее решать. Добавлено через 19 минут Дано натуральное число n. Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между...
C++ С++ ограничение длины строки http://www.cyberforum.ru/cpp-beginners/thread80407.html
#define _CRT_SECURE_NO_DEPRECATE #include <iostream> #include <fstream> #include <string.h> #include <windows.h> int main(){ using namespace std; setlocale(LC_ALL, "Russian"); cout << " ---------------------------------------- \n Данная программа считывает из\n текстового файла текст и\n выбирает из него все слова\n длиной, заданной пользователем,\n Записывая их в текстовый файл....
C++ Найти максимальный элемент среди отрицательных элементов матрицы, расположенных над побочной диагональю Помогите пожалуйста составить программу на C++: Дана матрица A(4,4) Найти максимальный элемент среди отрицательных элементов матрицы расположенных над побочной диагональю. подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9383 / 5433 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
27.12.2009, 16:05     Составить словарь всех слов, встречающихся в заданном текстовом файле.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
    
#define SEPLINE "----------------------------------------\n"
    
typedef struct {
    char *wrd;
    size_t cnt;
} Wrd_t;
 
int wrdcmp(const void *a, const void *b){
    return strcmp((*(Wrd_t*)a).wrd, (*(Wrd_t*)b).wrd);
}
 
int cntcmp(const void *a, const void *b){
    return (*(Wrd_t*)b).cnt - (*(Wrd_t*)a).cnt;
}
 
int main(void){
    char buf[BUFSIZ], *p;
    Wrd_t *words;
    size_t count, i;
    FILE *f;
    int action;
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    printf("Имя файла: ");
    if ( !fgets(buf, sizeof(buf), stdin) )
        exit(1);
    if ( p = strrchr(buf, '\n') )
        *p = '\0';
    if ( !*buf )
        exit(1);
    if ( ( f = fopen(buf, "r") ) == NULL ){
        perror("Не могу открыть файл!\n");
        exit(1);
    }
    words = NULL;
    count = 0;
    while ( fscanf(f, "%s", buf) == 1 ){
        for ( i = 0; i < count; ++i ){
            if ( !strcmp(words[i].wrd, buf) ){
                ++(words[i].cnt);
                break;
            }
        }
        if ( i == count ){
            if ( ( words = (Wrd_t*)realloc(words, sizeof(Wrd_t) * (count + 1)) ) == NULL ){
                perror("Ошибка памяти!\n");
                exit(1);
            }
            if ( ( words[i].wrd = strdup(buf) ) == NULL ){
                perror("Ошибка памяти!\n");
                exit(1);
            }
            words[i].cnt = 1;
            ++count;
        }
    }
    if ( ferror(f) ){
        perror("Ошибка чтения из файла!\n");
        exit(1);
    }
    fclose(f);
    
    if ( !words || !count ){
        perror("Ошибка чтения из файла!\n");
        exit(1);
    }
    
    printf("\nНайдено %d слов.\nСортировать по\n1 - алфавиту\n2 - количеству\n> ", count);
    scanf("%d", &action);
    switch ( action ){
        case 1 :
            qsort(words, count, sizeof(Wrd_t), wrdcmp);
            break;
        case 2 :
            qsort(words, count, sizeof(Wrd_t), cntcmp);
            break;
    }
    printf("\n%sСлово               Встретилось (раз)\n%s", SEPLINE, SEPLINE);
    for ( i = 0; i < count; ++i )
        printf("%-20s%d\n", words[i].wrd, words[i].cnt);
    printf("%s\n", SEPLINE);
    
    for ( i = 0; i < count; ++i ){
        if ( words[i].wrd != NULL){
            free(words[i].wrd);
            words[i].wrd = NULL;
        }
    }
    free(words);
    words = NULL;
    exit(0);
}
 
Текущее время: 12:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru