0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
1 | |
Посимвольная обработка текстового файла: распределение всех слов по длине03.03.2013, 02:56. Показов 5625. Ответов 21
Метки нет (Все метки)
Вывести в файле распределение всех слов по длине (т.е. сколько в файле слов из одной буквы, из двух и т.д.). За слово считать цепочку символов, которая отделена пробелами, точкой, запятой, круглыми скобками, воскл.знаком, вопр.знаком.
(Данные из файла считывать посимвольно, нельзя сразу считывать весь файл или целую строчку, нельзя копировать все содержимое файла в оперативную память.)
0
|
03.03.2013, 02:56 | |
Ответы с готовыми решениями:
21
Напечатать последовательно первые буквы всех слов текста (из одного текстового файла в другой) Посимвольная обработка содержимого текстового файла Посчитать распределение слов по длине во введённой строке текста Из текстового файла считать и подсчитать суммированием всех 16-ти разрядных слов |
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
||||||
03.03.2013, 03:32 | 2 | |||||
1
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
03.03.2013, 03:49 [ТС] | 3 |
Спасибо!
Только компилятор вот на что ругается: [IMG]http://s018.***********/i515/1303/ce/ef27a7cac6e8.png[/IMG]
0
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
09.03.2013, 23:29 [ТС] | 5 |
А что делает переменная t?
0
|
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
|
09.03.2013, 23:45 | 6 |
w0nder, переменная t считает сколько символов в текущем просматриваемом слове
1
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
||||||
09.03.2013, 23:58 [ТС] | 7 | |||||
Спасибо, и еще один вопрос. Я так поняла, что с 22 по 30 строчку задействована переменная t, которая считает кол-во символов в каждом слове, и, если в файле встретится разделяющий символ, то он не будет подсчитан.
А для чего дальше строчка
0
|
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
|
10.03.2013, 00:05 | 8 |
w0nder, не совсем так. если в файле встречается разделяющий символ он будет не посчитан, кроме того количество слов с t буквами будет увеличено на единицу.
эта строчка нужна для верной обработки последнего слова в файле (специфика возникает из-за возможного отсутствия разделителя перед концом файла).
1
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
10.03.2013, 17:24 [ТС] | 9 |
Черный ворон, ивиняюсь, еще - все не могу понять, какую функцию выполняет 18 строчка?
0
|
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
||||||
10.03.2013, 17:46 | 10 | |||||
w0nder, строка 18
1
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
10.03.2013, 18:45 [ТС] | 11 |
И получается, что каждый раз новое значение переменной t отправляется в массив, а затем эти числа в массиве сортируются?
0
|
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
|
10.03.2013, 19:03 | 12 |
w0nder, нет. изначально я выделяю массив на 25 элементов предполагая, что в тексте не встретится слово больше чем из 25букв. можно увеличить хоть до ста. это не так принципиально. потом перед чтением файла инициализирую нулями количество слов с различным количеством букв. потом читаю по символам файл, когда встречаю разделить инкрементирую значение ячейки масиива отвечающие за слова только что подсчитанной длины последнего прочтенного слова. не слишком запутано? могу попробовать иначе пояснить...
1
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
10.03.2013, 19:09 [ТС] | 13 |
Черный ворон, ну вот было бы неплохо. Просто не могу никак понять алгоритм до конца
0
|
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
||||||||||||||||||||||||||
10.03.2013, 19:22 | 14 | |||||||||||||||||||||||||
w0nder, ну попробую на примере. представим, что у нас файл выглядит так:
предполагаем, что в файле нет слов длиннее 25 букв
в первой - двухбуквенных во второй - трех итд. для случая тестового файла результат будет 1 3 1 1 так понятнее?
1
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
10.03.2013, 19:29 [ТС] | 15 |
Черный ворон, вот теперь все понятно, спасибо большое
0
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
12.03.2013, 01:14 [ТС] | 16 |
Кстати, протестировала получше, заметила вот что. Ведь числа же по идее не должны считаться за символ? Если речь идет именно о количестве букв в словах.
Как можно в коде сделать так, чтобы цифры не считались?
0
|
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
|||||||||||
12.03.2013, 01:23 | 17 | ||||||||||
w0nder, в смысле вообще не учитывать цифры? или считать их разделителем?
если первый вариант, то цикл while изменить так:
1
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
|
12.03.2013, 01:33 [ТС] | 18 |
Черный ворон, да, первый вариант, спасибо
Добавлено через 3 минуты Вот только если вводится комбинация из букв и цифр (ww1) , то в результате выходит, что в этом слове на один символ меньше, чем есть на самом деле Добавлено через 4 минуты Хотя если в такой цепочке символов будут сначала цифры, а потом буквы - то считает правильно
0
|
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
|
||||||
12.03.2013, 01:34 | 19 | |||||
w0nder, странно. у меня все адекватно работает.еще раз прикладываю полный код и результат:
0
|
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
|
||||||
12.03.2013, 01:37 [ТС] | 20 | |||||
Я просто еще немного переделала (вчитаталась в задание - нужно было, чтобы результат выводился не в консоли, а во втором файле) и добавила строчку if (count[i]>0) , может в этом дело
Код:
0
|
12.03.2013, 01:37 | |
12.03.2013, 01:37 | |
Помогаю со студенческими работами здесь
20
Осуществить сортировку текстового файла по длине строк циклическим слиянием/разделением Посимвольная обработка Чтение текста из текстового фала, обработка слов и вывод в консоль Посимвольная обработка строк Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |