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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AKruglyak
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 24
#1

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

12.01.2013, 14:11. Просмотров 286. Ответов 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++
Здравствуйте. Не могли бы подсказать как можно укоротить строчку до определенной длины??

Заполнить массив нулями до определенной длины - C++
Всем доброго времени суток. Не получается дополнить массив типа wchar_t нулями до определенной длины Допустим переменная buff содержит...

Как вывести на экран строку определенной длины - C++
есть вот такой код printf(&quot;%.15s: tick = %lld\n&quot;, items.name, items._unsec.tick); как сделать аналог чтобы печатались только первые...

Вывести слово определенной длины и длину слова в скобках - C++
1. Вывести Треугольник ABCD...Z BCD...Z CD...Z ...

Строка - количество слов с определенной буквой - C++
Всем привет! Имеется такая задачка: Дана строка, состоящая из 8 слов, разделенных 1 пробелом. Определить кол-во слов, в которых буква...

Нахождение длины второго слова - C++
предположим, хочу вывести длину второго слова. Делаю это так: нахожу первый пробел, записываю индекс цикла на этом месте в другую...

Нахождение слова минимальной длины - C++
Доброе время суток Имеется такой код просто вывода текста из файла на экран(Слов в файле несколько строк.), нужно сделать так, что бы еще...

Нахождение слова наибольшей длины в строке - C++
Строка состоит из слов,разделенных одним или несколькими пробелами.Найдите слово наибольшей длины.

Массив,нахождение отрезка max длины. - C++
Уважаемые пользователи!!Помогите пожалуйста с написанием программы!!Только начала изучение и пропустила лекцию о массивах ,но как известно...

нахождение Максимальной длины имени объекта Fat32 - C++
Прошу помощи,подсказки в решении такой вот задачки(С++Borland3.1) поиск объектов с максимальным количеством символов в имени среди...


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

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

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