Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
OneMoreBrave24
0 / 0 / 3
Регистрация: 09.10.2015
Сообщений: 18
#1

Вывести список слов в порядке убывания количества вхождений слов - C++

14.03.2017, 01:05. Просмотров 194. Ответов 2

Доброго времени суток. Задание такое: вывести на стандартный выходной поток список всех различных слов в файле в порядке убывания количества вхождений слов.
Написал такой код:
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
#include <stdio.h>
#include <string.h>
 
int main(int argc, char *argv[]) {
    if (argc < 2){
        return 0;
    }
    FILE* file = fopen(argv[1], "r");
    
    char text[256];
    char *a[100],*pov[100];
    char* t;
    int i=0,j,k,sk,pov_count[35],h=0,d,f;
    
    
    while (fgets(text, 256, file)) {
        printf("%s", text);
        t=strtok(text," ,.-\n");
        while (t != NULL) {
            a[i]=t;
            t = strtok (NULL, " ,.-\n");
            i++;
        }
        
        for(j=0; j<i; j++) {
            sk=0;
            f=0;
            for(k=0; k<i; k++) {
                if (strcmp(a[j], a[k]) == 0) {
                    sk++;
                }
            }
            for(d=0; d<h; d++) {
                if (strcmp(a[j], pov[d]) == 0) {
                    f++;
                }
            }
            if(sk > 1 && f == 0) {
                pov[h]=a[j];
                pov_count[h]=sk;
                h++;
            }
        }
        
        for(j=0; j<h; j++) {
            printf("\nSame words: %s",pov[j]);
            printf("\nCount          : %i",pov_count[j]);
            printf("\n");
        }
        
        printf("\n\n");
        //text = NULL;
    }
    
    fclose(file);
    return 0;
}
Тут две проблемы 3
1) Различные слова ищет только в отдельных строках
2) Даже когда ищет в различных строках - во второй строке падает и выводит какую-то дурь.
3) Не знаю как сделать их в порядке убывания

Помогите исправить! Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2017, 01:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывести список слов в порядке убывания количества вхождений слов (C++):

Вывести в алфавитном порядке список всех слов, встречающихся в тексте
Разработать программу, которая вводит текст и выводит в алфавитном порядке...

Сортировка слов в строке в порядке убывания их длины
Ребят помоги составить алгоритм на сортировку строки. Нужно вывести слова...

Вывести слова в порядке убывания количества символов
Помогите написать программу на Turbo C: Дано предложение. Вывести слова в...

Вывод на экран слов в порядке убывания их длины в каждой строке текста
Здравствуйте товарищи, никак не получается написать функцию сортировки слов в...

Работа со строками (sting.h) (печатать первые буквы слов в порядке убывания частоты их употребления)
Составить программу, которая позволяет ввести текст, а потом печатает первые...

2
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
14.03.2017, 04:42 #2
Где тут С++?
0
Nishen
467 / 278 / 154
Регистрация: 26.02.2015
Сообщений: 1,316
Завершенные тесты: 2
14.03.2017, 06:00 #3
OneMoreBrave24, ваш код написан, скорее, на языке C, чем на C++. В C++ имеет большой набор инструментов для работы с разными данными.
Например, чтобы воспользоваться средствами C++, можно заменить FILE* - fopen, на класс fstream, fgets на read и т.д. Более подробно о потоках в C++ Вы можете почитать тут.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2017, 06:00
Привет! Вот еще темы с решениями:

В файле задан список слов; составить список слов, встречающихся в списке только один раз
.В файле задан список слов. Составить список слов, встречающихся в списке...

Хеш-таблицы, сгенерировать список различных слов в тексте (с количеством вхождений их в этот текст)
Напишите компьютерную программу которая использует хеширование для следующей...

Программа считывает строку, делит ее на слова и выводит в порядке убывания длины слов (Ох,функции.Где ошибка?)
Помогите найти в чем ошибка, две ночи с красными глазами сижу =-O . Программа...

Для каждого из слов предложения вывести количество его вхождений
Помогите пожалуйста! Не могу найти ошибку. Очень срочно! Компилирует мне он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru