Дальневосточный Государственный Технический Университет
Отчет о курсовой работе
Выполнил: студент группы Р-4212
Проверила:
Владивосток
2005
Оглавление.
Постановка задачи.......................................................................................................... 3
Описание алгоритма....................................................................................................... 4
Исходный текст............................................................................................................... 5
Постановка задачи.
«Язык Dumb»
Входной файл: INPUT.TXT
Выходной файл: OUTPUT.TXT
Ограничение по времени: 5 секунд
Описание
Известный специалист в области программирования Строс Бжарнтру разработал специально для глуповской фабрики по производству кубиков Рубика расширенную версию языка Junk – язык Dumb.
Программа на языке Dumb состоит из операторов присваивания, условных и безусловных переходов и операторов печати и чтения значения переменной. Всего в программе может быть использовано до 26 переменных, имена которых записываются заглавными латинскими буквами от A до Z. В начале работы программы все переменные инициализированы некоторыми начальными значениями.
Программа на языке Dumb записывается по одному оператору в строке, причём никакие лишние пробельные символы в начале или конце строки не допускаются. Операторы неявно нумеруются, и номер оператора совпадает с номером строки текста, в которой находится оператор. Первая строка имеет номер 1. Выполнение программы начинается с первой строки.
Для экономии времени набора программы все операторы состоят из как можно меньшего количества символов. Так, оператор присваивания записывается в виде
x , = yz...
где x – переменная, которой присваивается значение, а yz – переменные, которые используются при вычислении её значения. Переменные записываются подряд без разделителей. Переменной x присваивается результат вычисления некоторой функции (различной для каждого оператора присваивания в программе) от аргументов xy... , точный вид которой неизвестен, но которая не имеет побочного эффекта, то есть не модифицирует переменных программы, не считывает и не записывает данные. Оператор условного перехода записывается в виде
?xL
где x – имя проверяемой переменной, а L – номер оператора, на который нужно перейти, если результат вычисления некоторой функции (различной для каждого оператора перехода) от x истинен. Точный вид функции неизвестен, однако она также не имеет побочного эффекта. Номер оператора от имени переменной не отделяется. Переход на отсутствующий оператор в синтаксически корректной программе не допускается. Оператор безусловного перехода записывается в виде
: L
где L – номер оператора, на который передаётся управление. Переход на отсутствующий оператор в синтаксически корректной программе не допускается. Оператор печати значения переменной имеет вид
>x где x – имя печатаемой переменной. Оператор чтения значения переменной имеет вид
<x
где x – имя переменной, значение которой считывается. Наконец, оператор завершения программы имеет вид
#
В конце текста программы обязательно должен присутствовать оператор завершения.
Язык Dumb получил широкую известность в городе Глупове, и вскоре к автору языка обратилась дирекция зоопарка. Оказалось, что обезьянки, обученные набирать программы, используют очень много лишних операторов присваивания, которые никак не влияют на работу программы. Например, в программе
A=BC
A=D
>A
#
первый оператор присваивания может быть удален из программы, а значение, печатаемое программой, не изменится.
Вам нужно написать программу, которая удаляет из программы на языке Dumb все операторы присваивания, не влияющие на результат работы программы, то есть, на значения, печатаемые программой.
Входные данные
На входе задаётся синтаксически корректная программа на языке Dumb, состоящая не менее чем из одного и не более чем из 500 операторов. Длина каждого оператора не превышает 255 символов.
Результат
Ваша программа должна напечатать синтаксически корректную программу на языке Dumb, из которой удалены все операторы присваивания, не влияющие на результат работы программы.
Примеры
Пример 1
Входные данные Результат
A=BC A=D
A=D >A
>A #
#
Пример 2
Входные данные Результат
B=A B=A
>B >B
<B <B
: 2 : 2
# #
Описание алгоритма.
vector<string> vars - массив с переменными в текущем блоке
string buffer [] - массив, содержащий входной файл
int *lines - массив, каждому элементу которого соответствует элемент массива vars, элементы массива lines представляют собой номера строк последнего присваивания для соответствующего элемента массива vars в текущем блоке
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.