Задача 3
Декларативная часть (описание переменных) во многих языках
программирования высокого уровня выглядит красивее, если текст специальным
образом отформатирован по колонкам. Ваша задача написать программу, которая
форматирует декларативную часть, написанную на некотором языке
программирования.
Исходные данные состоят не более чем из 50 строк, каждая из
которых содержит (в указанном порядке):
- идентификатор (имя переменной);
- символ двоеточие (:);
- идентификатор (тип переменной);
- символ точка с запятой (;);
- необязательный комментарий, который начинается с двойного
тире (--) и продолжается до конца строки.
Пробелы между любыми двумя пунктами могут как отсутствовать, так и
присутствовать в любом количестве. Идентификатор может состоять из
больших и маленьких латинских букв, цифр и символа подчеркивания (_).
Текст комментария содержит по крайней мере один символ.
Программа должна отформатировать заданный текст описания по
следующим правилам:
- Имена переменных начинаются с третьей колонки.
- Все двоеточия расположены в одной колонке, через одну после
самого длинного имени переменной.
- Идентификатор типа идет через пробел после двоеточия.
- Точка с запятой расположена непосредственно после идентифи-
катора типа, без пробелов.
- Все символы начала комментария (--) расположены друг под
другом, через две колонки после самого длинного описания ти-
па.
- Первое слово комментария начинается через пробел после сим-
вола начала комментария (--).
Исходные данные программа должна считывать из файла D:\PRINT.DAT,
а отформатированный текст помещать в файл D:\PRINT.SOL.
ПРИМЕР входного файла D:\PRINT.DAT:
----------------------------------------------------------------
code: codeblock;
ident:type;
lines : integer;
linenum : integer ; -- line number counter for loop
maxidentlen : integer ;
dummy: integer;
list : array_of_real ; --This is a big list of things;
----------------------------------------------------------------
ОБРАЗЕЦ выходного файла D:\PRINT.SOL для описанного примера:
----------------------------------------------------------------
code : codeblock;
ident : type;
lines : integer;
linenum : integer; -- line number counter for loop
maxidentlen : integer;
dummy : integer;
list : array_of_real; -- This is a big list of things;
----------------------------------------------------------------
ПАМЯТКА УЧАСТНИКУ
1) Для проведения тестирования Вы должны скопировать на диске-
ту Жюри два файла z?.exe и z?.pas, тестируется только файл
z?.exe, а файл z?.pas необходим жюри для контроля. Имена
файлов:
- Задача 1. - z1.exe и z1.pas
- Задача 2. - z2.exe и z2.pas
- Задача 3. - z3.exe и z3.pas
2) Ваша программа должна выводить на экран дисплея следующую
обязательную справочную информацию:
- Наименование олимпиады
- Наименование команды
- Фамилия, имя, место учебы, класс (курс) всех членов команды
- Номер задачи
Пример:
Городская командная олимпиада.
Команда: ЛДП-1
Петров Василий 1206 шк 11 кл
Петров Иван Техническая школа 11 кл
Петров Роман 1206 шк 11 кл
Петров Илья ГУ 1 курс
Задача 1
3) Если при тестировании программа работает больше 2 минут, очки
не начисляются.
4) Все вопросы по задачам подаются представителю Жюри в
письменном виде. Вопрос должен быть сформулирован так, что-
бы на него можно было ответить односложно (да,нет).