Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
14 / 14 / 16
Регистрация: 26.01.2015
Сообщений: 213
1

Поиск словосочетания в тексте

25.12.2016, 21:47. Показов 3375. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Смог решить такую задачу, как нахождение слова в тексте и вывод его посимвольно, решил усложнить задачу и вывести искомое словосочетание. Но вот тут появилась проблема - на выводе по какой-то причине урезаются символы и ещё есть один момент, который отмечу в коде в комментарии.

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<iostream>
#include<string>
using namespace std;
int main()
{
    string text;
    string ch;
    int res = 0;
    getline(cin, text, '#').ignore(); // если не использовать .ignore, то почему сразу выводится res=0 и ch.size()=0
    cout << endl;
    getline(cin,ch);
    res = text.find(ch);
    cout << res << endl;
    cout << ch.size() << endl;
    if (res != -1)
    {
        while (text[res]!=text[res+ch.size()])
        {
            cout << text[res++];
        }
    }
 
    else
    {
        cout << "Not\n";
    }
 
    cout << endl;
    
 
    return 0;
}
Допустим, что вставляем вот такой текст:

Though it was winter Vadim Petrovich, the agronomist of the farm, had a busy day last Tuesday.
He began his morning with the radio, he listened to the news. At half past seven he got up, washed, did his morning exercises at an open window, dressed and had breakfast.

Ставим символ '#' и вводим словосочетание из текста: "did his".
Но в ответе у меня посимвольно выводится только "did h". Не понимаю, почему?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2016, 21:47
Ответы с готовыми решениями:

Поиск словосочетания в тексте, и возврат текста до знака препинания
Есть текст в котором есть определенное слово, как мне можно достать весь текс после этого...

Работа со строками: в тексте поменять местами заданные словосочетания
помогите пожалуйста, нужно написать программу, которая нужно ввести текст, ввести 2 словосочетания...

Поиск словосочетания в строке
здравствуйте возможно я не корректно скажу но очень нужна помощь с VB, такое задание список...

Поиск в тексте DOC-файлов последовательностей символов по шаблону и поиск найденных в TXT-файле (с логом)
Уважаемые программисты! Очень нужен bat-файл или скрипт, который решает такую задачу: ...

4
74 / 71 / 67
Регистрация: 18.09.2015
Сообщений: 234
25.12.2016, 22:11 2
Цитата Сообщение от Ofelion Посмотреть сообщение
Но в ответе у меня посимвольно выводится только "did h". Не понимаю, почему?
Потому что text[res]==text[res+ch.size()] в данном случае букафка i == букафке i из слова morning

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
if (res != -1)
    {
        int tmp = res + ch.size();
        while (res != tmp)
        {
            cout << text[res++];
        }
    }
0
14 / 14 / 16
Регистрация: 26.01.2015
Сообщений: 213
25.12.2016, 22:57  [ТС] 3
amaralikyr, спасибо, всё получилось. Но я не понял, почему мой алгоритм работал некорректно? Почему моя i=i(morning)?
А без .ignore() почему сразу перескакивает на рузельтат, не давая ввести искомое словосочетание?
0
74 / 71 / 67
Регистрация: 18.09.2015
Сообщений: 234
25.12.2016, 23:28 4
Лучший ответ Сообщение было отмечено Ofelion как решение

Решение

Цитата Сообщение от Ofelion Посмотреть сообщение
А без .ignore() почему сразу перескакивает на рузельтат, не давая ввести искомое словосочетание?
Считывание строки getline
тут у меня был похожий вопрос, но увы мне предложили только решение без разъяснений, так что я не знаю))
Цитата Сообщение от Ofelion Посмотреть сообщение
Но я не понял, почему мой алгоритм работал некорректно? Почему моя i=i(morning)?
потому что здесь с каждым разом идет смещение вправо text[res]!=text[res+ch.size()]

res == 0
did his morning
d != ' ' <- (0 + ch.size()) 7 буква(пробел в данном случае )
res++

res == 1
did his morning
i != 'h' <- (1 + ch.size()) 8 буква
res++

...

res == 5
did his morning
i == 'i' ("i" в слове his по счету 5, 5 + 7 = 12, 12 буква по счет в этой строке "i" из слова morning)
цикл обрывается
1
14 / 14 / 16
Регистрация: 26.01.2015
Сообщений: 213
25.12.2016, 23:59  [ТС] 5
amaralikyr, Спасибо большое!
0
25.12.2016, 23:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2016, 23:59
Помогаю со студенческими работами здесь

Поиск в тексте
Помогите пожалуйста В файле имеется текст. Найти отсутствие пробелов после точки в конце...

Поиск в тексте
Доброго времени суток уважаемые форумчане !!! Подскажите как на питоне сделать скрипт задача...

Поиск в тексте
Я нашел его в Интернете Библии фото о том, Например Бог искать получить ответ,как нужно найти...

Поиск в тексте
Привет всем. Ребят подскажите пожалуйста. У меня есть текстовый файл test.txt . с номерами...

Поиск в тексте
Нужна помощь, построчный поиск в файле не работает выдает месседжбокс постоянно (кроме тех случаев...

Поиск в тексте.
надо отделить числы вместе знаками... написал эту, но не помогло procedure...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru