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

Разработать программу, сортирующую предложения текста по цели высказывания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание формы по коду http://www.cyberforum.ru/cpp-beginners/thread1175476.html
Здравствуйте. Нужна помощь в создании формы из ниже перечисленного кода, чтобы она показала итог программы: 1. кол-во столбцов, не содержащих ни одного нулевого элемента ( оформить в виде функции ); 2. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.(оформить...
C++ Объяснить выражение Привет всем. Помогите пожалуйста, объясните, что значит следующее выражение: int value = flex != 0 ? flex : 10000; http://www.cyberforum.ru/cpp-beginners/thread1175475.html
Вывести слова сообщения в порядке возрастания их длин C++
Вывести слова сообщения в порядке возрастания их длин.
C++ Сколько различных символов встречается в строке
которая для заданной строки s определяет, сколько различных символов встречается в строке.
C++ Std::set( vector ) и расход памяти http://www.cyberforum.ru/cpp-beginners/thread1175461.html
Здравствуйте! Пытаюсь разобраться сколько памяти съедают контейнеры и никак не могу понять следующее. Вот есть код( ниже) В конце стоит бесконечный цикл(знаю что так делать нельзя) только для того чтобы в таск менеджере посмотреть сколько памяти мы съели. На экран выводится: size1= 0.4666; size2 = 1,430; size3 = 4,1008 При этом в таск менеджере расход показывает 6,11 Если set заменить на...
C++ Для каждого столбца двумерного массива подсчитать сумму четных положительных элементов III. Дан массив размером n×n, элементы которого целые числа. Замечание. Для хранения массив n×n использовать ступенчатый массив. Для каждого столбца подсчитать сумму четных положительных элементов и записать данные в новый массив. подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,071
Записей в блоге: 5
Завершенные тесты: 1
14.05.2014, 15:14
Кликните здесь для просмотра всего текста
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 <fstream>
#include <algorithm>
#include <iterator>
/* Предикат для сортировки предложений */
class CompareText {
public:
    bool operator() (const std::string& str1, const std::string& str2) const {
        /* Возвратить последние символы строки и сравнить их */
        return str1.back() < str2.back();
    }
};
int main()
{
    system("chcp 1251");
    /* Строка для хранения прочитанного текста из файла */
    std::string text;
    /* Строка-маска для разделителей*/
    std::string mask(".?!");
    /* Векторы для хранения предложений */
    std::vector<std::string> proffer_question;
    std::vector<std::string> proffer_exclamation;
    std::vector<std::string> proffer_narrative;
    /* Открываем файл */
    std::ifstream file("input.txt");
    /* Если файл не удалось открыть сообщаем об этом пользователю */
    if(!file) {
        std::cerr << "Error open file!" << std::endl;
        exit(1);
    }
    /* Задаем итераторы для начала и конца файла */
    std::istreambuf_iterator<char> end;
    std::istreambuf_iterator<char> iit(file);
    /* Копируем файл в строку */
    std::copy(iit, end, std::back_inserter(text));
    /* Задаем итераторы для диапазона подстроки */
    std::string::iterator idx_low = text.begin();
    std::string::iterator idx_higth;
    /* Ищем первый разделитель */
    idx_higth = std::find_first_of(idx_low, text.end(), mask.begin(), mask.end());
    /* Если разделителей в тексте нет сообщаем об этом пользователю */
    if (idx_higth == text.end()) {
        std::cerr << "Not find character punct!" << std::endl;
        exit(1);
    }
    /* Парсим текст */
    do {
        /* Поместить предложение в соответствующий вектор */
        if(*idx_higth == '.')
            proffer_narrative.push_back(std::string(idx_low, ++idx_higth));
        if(*idx_higth == '!')
            proffer_exclamation.push_back(std::string(idx_low, ++idx_higth));
        if(*idx_higth == '?')
            proffer_question.push_back(std::string(idx_low, ++idx_higth));
         /* Переносим итератор в конец предложения и ищем следующий разделитель */
        idx_low = idx_higth;
        idx_higth = std::find_first_of(idx_low, text.end(), mask.begin(), mask.end());
    }
    while(idx_higth != text.end());
    /* Выводим предложения в установленном порядке */
    std::copy(proffer_question.begin(),    proffer_question.end(),    std::ostream_iterator<std::string>(std::cout, "\n\n"));
    std::copy(proffer_exclamation.begin(), proffer_exclamation.end(), std::ostream_iterator<std::string>(std::cout, "\n\n"));
    std::copy(proffer_narrative.begin(),   proffer_narrative.end(),   std::ostream_iterator<std::string>(std::cout, "\n\n"));
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru