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

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

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

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

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

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

Примеры

Копирование: char01-copy.cpp

Удаление пробелов: char02-del-space.cpp

Удаление пробелов, табуляций, концов строк: char03-del-space-tab-nl.cpp

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

Замена пробельных цепочек на один пробел: char05.pdf   char05-compress-ws.cpp

Автоматы

Схема автомата для копирования (программа выше): 01-copy.pdf

Автомат удаления пробелов: 02-remove-space.pdf

Автомат удаления пробелов и табуляций: 03-remove-space-tab.pdf  вариации программы: 03-1.cpp  03-3.cpp  03-4.cpp

Варианты

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

0. Выведите только цепочки десятичных цифр, которые находятся внутри парных двойных кавычек. После каждой цепочки выведите перевод строки (\n). Если последняя двойная кавычка непарная, цепочки после неё тоже выведите.

Пример входа: abc"bca10 230 " 67 " 4g ""sb 90" sd fdsd4"567

Соответствующий выход:
10
230
4
90
567

1. Выведите весь входной текст, кроме цепочек десятичных цифр, которые находятся внутри парных двойных кавычек. Если последняя двойная кавычка непарная, цепочки после неё тоже исключите.

Пример входа: abc"bca10 230 " 67 " 4g ""sb 90" sd fdsd4"567

Соответствующий выход: abc"bca  " 67 " g ""sb " sd fdsd4"

2. Выведите весь входной текст, кроме цепочек, начинающихся с /* и заканчивающихся на */ или концом ввода. Обратите внимание, что перед /* могут стоять символы /, а перед */ – символы *.

Пример входа:
rigj gre/* grei*//*****/ f-fge*32/4 d s /*
ddd*/yyy/*

Соответствующий выход:
rigj gre f-fge*32/4 d s yyy

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

Пример входа: 56mimpo,m! ???ku!!! M?1000!??!=!!!!?!?

Соответствующий выход: 56mimpo,m! ?ku! M?1000?!=?!

  • Нет меток