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

Нахождение слов определенной длины в тексте - C++

Восстановить пароль Регистрация
 
AKruglyak
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 24
12.01.2013, 14:11     Нахождение слов определенной длины в тексте #1
Добрый день, столкнулся с проблемой следующего характера. Нужно выписать из текста все слова длины 5. Не долго думая, я написал такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <string>
using namespace std;
fstream cin("input.txt");
ofstream cout("output.txt");
int main(){
    string s,s1;
    while(getline(cin,s))
        s1+=s;
    int count=0;    
    for(int i=3;i<s1.size();i++){
        if(s1[i-3]==' ' and s1[i+3]==' ')
            cout<<s1[i-2]<<s1[i-1]<<s1[i]<<s1[i+1]<<s1[i+2]<<endl;
    }
}
Но сразу понял свою ошибку. Выводились так же слова вида ****?, где ? любой знак препинания. И с несколькими пробелами впереди или по середина, например "Он до". Можно ли исправить данную проблему, напрямую не указывая, что каждый символ не должен быть пробелом или знаком препинания? Если нет, то как реализовать это наиболее эффективно?

Добавлено через 13 минут
Проблема решена следующим способом:
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
#include <fstream>
#include <string>
using namespace std;
fstream cin("input.txt");
ofstream cout("output.txt");
bool check(char g){
    if(g!=' ' and g!=',' and g!='.' and g!=';' and g!='-' and g!=':' and g!='?' 
    and g!='!' and g!='"')
        return true;
    else 
        return false;   
}
int main(){
    string s,s1;
    while(getline(cin,s))
        s1+=s;
    int count=0;    
    for(int i=3;i<s1.size();i++){
        if(s1[i-3]==' ' and s1[i+3]==' '){
            string f;
            bool m=true;
            for(int j=i-2;j<=i+2;j++){
                f+=s1[j];
                if(!check(s1[j]))
                    m=false;
            }
            if(m)
                cout<<f<<endl;
                
        }
        
            
    }
}
Но всё равно интересно, можно ли решить проще?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 14:11     Нахождение слов определенной длины в тексте
Посмотрите здесь:

C++ Массив,нахождение отрезка max длины.
Построить диаграмму длины слов, входящих в текст, содержащий от 5 до 10 слов. C++
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? C++
C++ нахождение Максимальной длины имени объекта Fat32
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? C++
Дан список слов различной длины. Составить программу упорядочения списка слов: По их длине; По алфавиту C++
Как вывести на экран строку определенной длины C++
Заполнить массив нулями до определенной длины C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
12.01.2013, 14:46     Нахождение слов определенной длины в тексте #2
Конечно можно используя функцию strtok.
Yandex
Объявления
12.01.2013, 14:46     Нахождение слов определенной длины в тексте
Ответ Создать тему
Опции темы

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