Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
7 / 3 / 0
Регистрация: 23.04.2013
Сообщений: 203

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

14.05.2014, 11:27. Показов 743. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста.
Нужно написать программу, которая считывает текст из файла и выводит на экран сначала вопросительные, затем восклицательные, а затем повествовательные предложения (предложение - совокупность символов которые заканчивается.!? )
Необходимо предусмотреть случай, когда файла не существует
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2014, 11:27
Ответы с готовыми решениями:

(МК51) Разработать программу, сортирующую двоично-десятичные числа массива
Помогите пожалуйста, необходимо разработать программу, сортирующую двоично-десятичные числа массива 20H-3FH РПД микроконтроллера МК51 в...

Разработать программу расчета траектории баллистической цели
Доброго времени суток, товарищи. Пишу сюда т.к. зашел в тупик, зарылся по самые уши, а вытащить никто не может. Разработал в среде маткад...

Разработать программу пословного ввода предложения
Помогите пожалуйста с заданием. Я не имею представления, как это делать. Задание: Разработать программу пословного ввода предложения....

3
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,646
Записей в блоге: 6
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;
}
0
7 / 3 / 0
Регистрация: 23.04.2013
Сообщений: 203
16.05.2014, 07:00  [ТС]
уважаемый Ilot, на обычном 6 билдере код не работает
да и как-то там у вас всё сложно
Может как-то по-другому можно?
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,646
Записей в блоге: 6
16.05.2014, 08:17
Цитата Сообщение от trans967 Посмотреть сообщение
Может как-то по-другому можно?
Можно и по другому, но в тогда вы уж точно ничего не поймете. А здесь в принципе все просто. Тем более Коментарии есть к каждой строке. Так, что вы не ленитесь и пытайтесь разобраться в коде. Итак вам халява привалила немалая
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2014, 08:17
Помогаю со студенческими работами здесь

Разработать программу для получения функций спроса и предложения
разработать программу для получения функций спроса и предложения и определения равновесной цены товара методом Ньютона.

Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста
Дана строка. Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста.

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

Строка: Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста.
Дана строка. Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста.

Разработать программу, которая изымает из второго текста все вхождения слов первого текста
Пожалуйста помогите!!! Задано два текста, слова в которых разделены пробелами и знаками препинания. Разработать программу, которая...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru