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

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

Восстановить пароль Регистрация
 
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 178
14.05.2014, 11:27     Разработать программу, сортирующую предложения текста по цели высказывания #1
Помогите пожалуйста.
Нужно написать программу, которая считывает текст из файла и выводит на экран сначала вопросительные, затем восклицательные, а затем повествовательные предложения (предложение - совокупность символов которые заканчивается.!? )
Необходимо предусмотреть случай, когда файла не существует
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 11:27     Разработать программу, сортирующую предложения текста по цели высказывания
Посмотрите здесь:

разработать алгоритм и программу для зашифрованного текста C++
Написать программу, сортирующую список фамилий студентов в группе. C++
Разработать алгоритм и программу для удаления из введенного текста слов, которые начинаются и заканчиваются одним и тем же символом C++
C++ Разработать алгоритм и программу для удаления из введенного текста слов, которые начинаются и заканчиваются одним и тем же символом.
Необходимо написать программу сортирующую эту строки по алфавиту и выводящую результат в другой файл. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
14.05.2014, 15:14     Разработать программу, сортирующую предложения текста по цели высказывания #2
Кликните здесь для просмотра всего текста
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;
}
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 178
16.05.2014, 07:00  [ТС]     Разработать программу, сортирующую предложения текста по цели высказывания #3
уважаемый Ilot, на обычном 6 билдере код не работает
да и как-то там у вас всё сложно
Может как-то по-другому можно?
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
16.05.2014, 08:17     Разработать программу, сортирующую предложения текста по цели высказывания #4
Цитата Сообщение от trans967 Посмотреть сообщение
Может как-то по-другому можно?
Можно и по другому, но в тогда вы уж точно ничего не поймете. А здесь в принципе все просто. Тем более Коментарии есть к каждой строке. Так, что вы не ленитесь и пытайтесь разобраться в коде. Итак вам халява привалила немалая
Yandex
Объявления
16.05.2014, 08:17     Разработать программу, сортирующую предложения текста по цели высказывания
Ответ Создать тему
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru