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

в тексте который считан из файла выбрать предложения с заданным числом строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Открытие .bmp http://www.cyberforum.ru/cpp-beginners/thread1019174.html
Как открыть .bmp в VS 2012?
C++ Как проверить в строке все вхождения символа? Как проверить в строке все вхождения символа и запомнить кусок строки между двумя его вхождениями? http://www.cyberforum.ru/cpp-beginners/thread1019156.html
C++ Как узнать глубину рекурсии?
Подскажите пожалуйста как узнать глубину рекурсии? Нужно узнать глубину рекурсии может кто помочь? #include<math.h> #include<iostream> using namespace std; float func(int n); //function natural number N int main() { int n; cout<<"Equement"<<endl; //
C++ не получается написать динамическими массивами
Помогите пожалуйста #include <iostream> #include <stdlib.h> #include <time.h> #include <math.h> using namespace std; void intmas1 (int mas, int const n, int const m); void intmas2(int mas, int const n, int const m);
C++ Из string в int и обратно http://www.cyberforum.ru/cpp-beginners/thread1019131.html
Подскажите, пожалуйста, функцию для перевода из sting в int и обратную
C++ Задачка на процедуры и функции Помогите пожалуйста решить задачку с помощью процедур и функций. Составить процедуру, позволяющую определить позицию самого правого вхождения заданного символа в исходную строку. Если строка не содержит символа, результатом работы процедуры должна быть –1. подробнее

Показать сообщение отдельно
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
26.11.2013, 03:19
Вот думаю разберешься и тебе это поможет, вполне возможны косяки с подсчетом слов, если будут доп.символы разделители, по аналогии добавишь их.
тут делается все ручками, есть методы и функции которые облегчают разбиение текста на предложения и слова, тот же split.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include<iostream>
#include<vector>
#include<string>
#include<stdlib.h>
#include<locale.h>
#include<fstream>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n;
    std::cout << "Введите количество слов n = ";
    std::cin >> n;
 
    std::ifstream in("input.txt"); // читаем из файла
    std::string text; // в строку
    std::getline(in,text,'\0');
    in.close();
 
    std::cout << text << std::endl;
    std::vector<std::string> data; // вектор если грубо сказать массив в котором могут храниться объекты любых 
    std::string temp = "";             // типов в данном случае std::string
 
    //разбиваем текст на предложения
    for(int i = 0; i < text.size(); ++i)
    {
        if (text[i] != '.' && text[i] != '!' && text[i] != '?') // пока не встретили символ завершения строки
            temp += text[i]; // считываем символы в строку (предложение)
        else
        {
            temp += text[i];
            data.push_back(temp);  // как только встретили кидаем нашу строку в вектор(массив)
            temp.clear(); // "очищаем строку"
        }
    }
 
    // считаем количество слов в каждом предложении.
    std::cout << std::endl;
    std::cout << "Предложения с заданным количеством слов(" << n << ")" << std::endl;
    for (int i = 0; i < data.size(); ++i) // идем по вектору с предложениями
    {
        int count = 0; // кол.слов в текущем предложении
        temp = data[i]; // берем i предложение
        for (int j = 0; j < temp.size(); ++j) // и идем по всем его символам
        {
                        // пока не встретили "символы разделители слов" в предложении идем дальше
            if(temp[j] != ' ' && temp[j] != ',' && temp[j] != ':' && temp[j] != ';' && temp[j] != '.')
                continue;
            else
            {
                ++count;//как только наткнулись на 1 из них - это значит что слово закончилось
                ++j;
                                // ищем начало след слова
                while(temp[j] == ' ' || temp[j] == ',' || temp[j] == ':' || temp[j] == ';')
                    ++j;
            }
                        // и так пока не найдем все слова
        }
        // если кол. слов == кол. заданному то выводим предложение
        std::cout << count << std::endl;
        if(count == n)
            std::cout << i << ")"<< data[i] << std::endl;
 
    }
 
    std::system("pause");
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru