Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 5 Следующий »

Срок выполнения: 25 сентября –

Задание
  1. Постройте конечный автомат (схему переходов), который преобразует входной поток символов в выходной по вашему заданию (варианты ниже).
    Автомат должен распознать во входном потоке все подходящие подпоследовательности; действия над ними означают следующее:
    "удалить" – входной поток копируется на выход целиком, кроме распознанных подпоследовательностей;
    "вывести" – на выход попадают только распознанные подпоследовательности, построчно, то есть после каждой нужно вывести символ перехода на новую строку;
    "заменить" – входной поток копируется на выход целиком, но вместо распознанных подпоследовательностей выводятся указанные по заданию.

  2. Напишите программу на Си++, которая работает по созданному автомату.
    Символы читать со стандартного входа (std::cin), писать на стандартный выход (std::cout).
    Использовать массивы нельзя.
    На одной итерации можно выводить несколько символов (только если это действительно необходимо).
    Символы в кодовых таблицах могут располагаться произвольно, поэтому для работы с диапазонами символов нужно по возможности использовать функции is... и toupper, tolower. Там, где эти функции не помогают, нужно проверять все символы диапазона явно.

Примеры

Копирование: 01.zip

Удаление пробелов: 02.zip

Удаление пробелов и табуляций: 03.zip

Удаление пробельных символов: 03-4.cpp

Замена пробельных цепочек на один пробел: 04.zip

Вывод слов, начинающихся с p: p.zip

Проверка сбалансированности скобок: par.cpp

Варианты

Расчёт номера своего варианта см. на странице Успеваемость студентов.

В данной работе:

целое число – строка из десятичных цифр, сразу перед ней может стоять плюс или минус, например: 034023, 656, -0, +534;

тег – строка, обрамлённая угловыми скобками, не может прерываться переходом на новую строку, например: <int>, <>, <<<<q<>, <d d d d >, </>;

комментарий – строка, которая начинается символами /* и заканчивается символами */;

 

0. Вывести целые числа, которые находятся внутри двойных кавычек.

1. Удалить целые числа, которые находятся вне двойных кавычек.

2. Вне комментариев заменить последовательности восклицательных знаков на один восклицательный знак, последовательности вопросительных знаков – на один вопросительный знак, последовательности из восклицательных и вопросительных знаков вперемешку – на ?! .

3. Посчитать теги внутри комментариев.

 

  • Нет меток