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

Подсчёт количества слов в данном текстовом файле - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Jeorgia_S
 Аватар для Jeorgia_S
1 / 1 / 0
Регистрация: 31.05.2011
Сообщений: 14
09.10.2011, 16:32     Подсчёт количества слов в данном текстовом файле #1
Задание такое: определить количество слов в данном текстовом файле. Слова - последовательности символов и цифр, разделенные "не символами", вроде пробелов, точек, запятых и пр.

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
#include <iostream>
#include <fstream>
#include <cctype>
using namespace std;
 
int main()
{   setlocale(LC_ALL,"rus_rus.1251");
    unsigned char ch;
    int i=0;
    ifstream input("text.txt");
    if(!input) {
        cout << "Не удается открыть файл.\n";
        system("PAUSE");
        return 1;
    }
    input >> ch;
    input.unsetf(ios::skipws); // считываем с пробелами
 
    while(!input.eof()) {
        input >> ch;
        if(!isalnum(ch)) {
            i++; 
            while(!isalnum(ch) && !input.eof()) input >> ch;
        }
    }
            
    cout << "Число слов: " << i << '\n';
    input.close();
    system("PAUSE");
    return 0;
}
Всё бы ничего, но если поставить в начало или конец текста группу разделителей, например " !?. ", то он определяет, как слово. Пожалуйста, подскажите, как от этого избавиться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 16:32     Подсчёт количества слов в данном текстовом файле
Посмотрите здесь:

Поиск подстроки в произвольном текстовом файле Visual C++
Получить из количества миллисекунд дату Visual C++
C++ Подсчитать количество строк в текстовом файле
Visual C++ Создание неопределенного количества массивов
Visual C++ БД что означает %k в данном случае?
C++ Что означает %k в данном случае?
C++ Подсчет количества слов в строке
В текстовом массиве подсчитать сумму длин Visual C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
09.10.2011, 23:44     Подсчёт количества слов в данном текстовом файле #2
Jeorgia_S, вот держи.
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
#include <fstream>
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int  count_word(const char* str);
 
int main() {
   fstream fp("D:\\words.txt", fstream::in);
   if(! fp.is_open())
         return 1;
   string line;
   int cnt = 0;
   while(! fp.eof()) {
            getline(fp, line, '\n');
            cnt += count_word(line.c_str());
   }
   fp.close();
   cout << "count words: " << cnt << endl;
   cin.get();
   return 0;
}
 
// функция по подсчёту кол-во слов
int  count_word(const char* str) {
   int len = 0;
   do {
       if(isalnum(*str)) 
             for(++len; isalnum(*str) && *str; *str++);
   } while( *str++ != '\0' );
   return len;
}
Jeorgia_S
 Аватар для Jeorgia_S
1 / 1 / 0
Регистрация: 31.05.2011
Сообщений: 14
10.10.2011, 07:00  [ТС]     Подсчёт количества слов в данном текстовом файле #3
xAtom, большое спасибо за помощь!
jurijs193
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 3
10.11.2014, 16:17     Подсчёт количества слов в данном текстовом файле #4
Большое спасибо, мне тоже пригодился этот код, только не могу с одним справится, помогите пожалуйста добавить код, который записывает в файл распределение слов по длинне(сколько слов в которых одна, две, три буквы и т.д)...
Например в text.txt файле следующее: as a, fgh, agh; p
Программа срабатывает и записывает в файл следующее:
Слов с одной буквой: 2
Слов с двумя буквами: 1
Слов с тремя буквами: 2
Digit@ll
10.11.2014, 18:39
  #5

Не по теме:

Слово никак не может состоять из одной буквы, по определению.

jurijs193
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 3
10.11.2014, 23:56     Подсчёт количества слов в данном текстовом файле #6
Согласен, просто мне такое задали в школе....не знаю что и делать, ну если допустим из двух, трёх букв?
Yandex
Объявления
10.11.2014, 23:56     Подсчёт количества слов в данном текстовом файле
Ответ Создать тему
Опции темы

Текущее время: 22:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru