0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 7
|
||||||
1 | ||||||
Определить количество букв, слов и строк17.07.2017, 17:12. Показов 1329. Ответов 15
Метки нет (Все метки)
Здравствуйте
Существует задача: есть файл с произвольным текстом (заранее неизвестным). Необходимо открыть этот файл, считать с него текст и вывести информацию: сколько раз встречаются в этом тексте буквы, слова и строки. По каждой букве вывести статистику в виде "Буква" - "Сколько раз встречается в тексте". По каждому слову также вывести статистику в виде "Слово" - "Сколько раз встречается в тексте" А также - общее количество строк, которое есть в тексте. На текущий момент застопорился на выводе статистики по словам. Не могу сообразить какой создать цикл для вывода информации по каждому слову. Текст из файла читается в массив, а весь из массива как я понимаю, необходимо разбить на части через strtok (для разделения текста по словам). Но что делать дальше - не могу понять. На текущий момент имеется код:
0
|
17.07.2017, 17:12 | |
Ответы с готовыми решениями:
15
Подсчитать количество букв, слов и строк ввода Строка состоит из 3-ех слов.Определить какое из слов содержит наибольшее количество гласных букв Подсчет количество: строк, слов, букв в open файле Определить, сколько букв, слов и строк в файле |
17.07.2017, 17:25 | 2 | ||||||||||||||||||||
Заметил несколько моментов:
далее обьявляешь :
Это то что пока сразу бросается в глаза
0
|
0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 7
|
|||||||||||
17.07.2017, 18:50 [ТС] | 3 | ||||||||||
Спасибо! Первые 2 момента - обычная невнимательность.
Насчет 3-го - исправил
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
17.07.2017, 18:52 | 4 |
Если можно, подробнее, как Паскаль вычисляет на этапе компиляции длину строки, которая ещё не введена даже? Другое дело - паскалевские короткие строки свою длину в нулевом байте держат. По этому они во-первых не могут быть длиннее 255 символов, а во-вторых их длина действительно не вычисляется...
michael2233, очевидное решение - нужен контейнер типа map, который ключами будет хранить слова, а значениями количество их вхождений. Можно самоделку сделать, можно из GLib готовый взять. Но судя по второй вариант - не ваш случай...
0
|
18.07.2017, 11:41 | 5 | |||||
Это я и имел в виду. В паскале код:
0
|
0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 7
|
|
18.07.2017, 18:47 [ТС] | 6 |
Спасибо огромное за идею!
А Вы можете подсказать, где посмотреть примеры создания собственного контейнера и работы с ним на Си? Или хотя бы пример привести?
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|||||||||||
18.07.2017, 19:16 | 7 | ||||||||||
Не поверите! Прямо в этом разделе на форуме. Пару штук сам делал. Давно, правда, но кнопка "поиск" в помощь. Самое простое решение - дерево. Можно даже забить на балансировку. Ну выродится в список в самом плохом случае. Ключи - char*, значения - любой целочисленный тип, какой больше нравится (главное, чтобы количество вхождений слов помещалось).
0
|
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
|
||||||
19.07.2017, 04:24 | 8 | |||||
Вот написал подсчёт слов используя Рандомизированное(случайное) бинарное дерево поиска.
2
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
19.07.2017, 17:35 | 9 | |||||
Ну и просто для расширения кругозора
1
|
0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 7
|
|
19.07.2017, 21:33 [ТС] | 10 |
Огромное спасибо за пример! Правда, при попытке выяснить как какая функция работает в данном коде, оказалось, что данные из файла все же на печать не выводятся. Но я думаю, что разберусь с этим. В любом случае спасибо Вам большое!
Добавлено через 7 минут И Вам огромное спасибо за помощь и идеи! Теперь буду думать, стоит ли мне устанавливать себе Linux или хотя бы виртуальную машину на нем.
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
19.07.2017, 23:27 | 11 |
Ставьте, не задумывайтесь! По крайней мере будет, с чем сравнивать...
Ну и вот Вам ещё решение, как слова посчитать (проще, но тупее): затолкать все слова в массив (с разделением текста на слова Вы, как я понял, справитесь), отсортировать и считать повторяющиеся (они в отсортированном массиве подряд идут)...
0
|
0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 7
|
|
23.07.2017, 00:02 [ТС] | 12 |
Если не смогу сразу разобраться с деревьями, то попробую и с помощью массивов сделать. В любом случае для сравнения попробовать можно.
А еще вопрос: в бинарных деревьях можно ли сделать как-либо сортировку по возрастанию элементов (без участия массива). Как в Вашем примере сделать для поля MEETS сортировку от 1 до 11 в порядке возрастания количества повторяющихся слов?
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
23.07.2017, 02:16 | 13 | |||||
Нет, так не получится. В дереве данные сортируются по ключу (по строке в нашем случае). Если нужно вывести отсортированными по количеству вхождений, прийдётся создавать другое дерево, где ключами будут счётчики, а значениями списки слов, либо какую-то другую конструкцию для хранения пар (слово, счётчик). Тогда проще сразу по-другому сделать:
0
|
0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 7
|
||||||
29.07.2017, 18:36 [ТС] | 14 | |||||
В общем, вот что получилось на текущий момент:
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
29.07.2017, 23:59 | 15 | |||||
Сообщение было отмечено michael2233 как решение
Решение
Как говорил один азербайджанский торговец на вещевом рынке, БЭС ПРЫБАМБАСАФ!
Код
[andrew@andrew WordsCounter]$ gcc -Wall -ansi -pedantic -o words_counter main.c [andrew@andrew WordsCounter]$ ./words_counter jingle.txt WORD | COUNT all | 2 the | 2 way | 2 what | 2 fun | 2 it | 2 is | 2 to | 2 ride | 2 In | 2 a | 2 one | 2 horse | 2 open | 2 sleigh | 2 Jingle | 3 Oh | 3 jingle | 3 bells | 4 [andrew@andrew WordsCounter]$ Код
[andrew@andrew WordsCounter]$ cat jingle.txt Oh, jingle bells, jingle bells Jingle all the way Oh, what fun it is to ride In a one horse open sleigh Jingle bells, jingle bells Jingle all the way Oh, what fun it is to ride In a one horse open sleigh [andrew@andrew WordsCounter]$
0
|
0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 7
|
|
10.08.2017, 21:40 [ТС] | 16 |
В общеми целом всем огромное спасибо за помощь! Задача решена, в том, в чем было необходимо, разобрался!
Вам отдельное спасибо за помощь!
0
|
10.08.2017, 21:40 | |
10.08.2017, 21:40 | |
Помогаю со студенческими работами здесь
16
Определить количество слов в строке и вывести на экран все слова, количество букв у которых нечетное. Строка: Подсчитать и вывести на экран количество слов и количество всех букв в предложении,а также количество букв 'b'. Определить количество слов в тексте, состоящих из K букв Определить количество слов, начинающихся с гласных букв Определить количество слов состоящих из менее 5 букв Определить количество слов в тексте, состоящих из K букв. C#/C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |