Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
3 / 3 / 1
Регистрация: 04.04.2018
Сообщений: 351
1

Не видит первое предложение

04.05.2019, 19:03. Показов 1090. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такой код, Indexer - структура.
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
void OfferNumberFunc(int HowFiles, Indexer* Files) // разделяет предложения и записывает их в Predl. 
{
    
    for  (int i = 0; i < HowFiles; i++)
    {   
        cout << endl << i << " Start." << endl;
        ifstream in(Files[i].FullPath + Files[i].NameFile);// инициализируем поток
        string file{ istreambuf_iterator<char>{ in }, {} };// инициализируем строку содержимым файла(с помощью итератора буфера потока)
        const char* delims = "!?."; // строка с разделителями   
        string::size_type beg{}, end{};    // позиции первого и последнего символа предложения
 
        for (;;)    // бесконечный цикл
        {
            beg = file.find_first_not_of(delims, beg);  // ищем первый символ, начиная с beg, не являющийся разделителем
            end = file.find_first_of(delims, beg);  // ищем первый символ, начиная с beg, являющийся разделителем
            if (beg != string::npos)   // если нашли beg,
                Files[i].Predl.push_back(file.substr(beg, end - beg));    // добавляем подстроку [beg; end) в вектор
            if (end == string::npos)   // если не нашли end,
                break;  // выходим из цикла
            beg = ++end;    // делаем первым следующий за последним символом найденного предложения
        }
        
        for(int j = 1; j < Files[i].Predl.size(); j++) // просто вывод
        {
        cout << j << "Predl = " << Files[i].Predl[j] << endl;
        }
        cout << endl << i << " end." << endl;
    }
    FuncEnd();
}
Код должен брать файл, искать в нем все предложения, и записывать в массив предложений. Работает некорректно, не видит первое предложение.
Пример текста в файле:
Minsk is the capital and largest city of Belarus. The population in January 2018 was 1982444. Returns the number of elements in the vector. This is the number of actual objects held in the vector, which is not necessarily equal to its storage capacity.This is the number of actual objects held in the vector, which is not necessarily equal to its storage capacity.This is the number of actual objects held in the vector, which is not necessarily equal to its storage capacity.
Вывод
Files[i].Predl[j] = The population in January 2018 was 198244
Files[i].Predl[j] = Returns the number of elements in the vector
....
Т.е. не видит первое предложение тк видимо там нет знака который я ищу, как исправить?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2019, 19:03
Ответы с готовыми решениями:

Ввести предложение. Поменять первое и второе слово местами
Условие:Ввести предложение.Поменять первое и второе слово местами.Вывести результат на экран. как...

Дано предложение. Поменять местами его первое и последнее слово.
Дано предложение. Поменять местами его первое и последнее слово.

Дано предложение. Нужно вывести на экран только первое слово предложения
Дано предложение. Нужно вывести на экран только первое слово предложения

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

1
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
05.05.2019, 04:19 2
Лучший ответ Сообщение было отмечено dimmarvel как решение

Решение

Цитата Сообщение от dimmarvel Посмотреть сообщение
for(int j = 1; j < Files[i].Predl.size(); j++) // просто вывод
Индексация элементов массива начинается с 0
1
05.05.2019, 04:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2019, 04:19
Помогаю со студенческими работами здесь

Поменять местами первое и последнее предложение
Доброго времени суток,недавно попалась задача где нужно поменять местами 1-ое и последнее...

Найти слова, которые входят и в первое и во второе предложение
Добрый день! У меня такая проблема: необходимо найти слова, которые входят и в первое и во второе...

Как поменять местами в предложение первое и последнее слово?
Доброго времени суток) подскажите ,пожалуйста,как в поменять местами в предложение первое и...

Дано предложение. Поменять местами его первое и последнее слово
Часть 1. Дан числовой массив. Реализовать алгоритм сортировки подсчётом. Часть 2. Дано...


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

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