Задача 1.
Пусть программа на языке BASIC состоит из последовательностей операторов. Каждая последовательность состоит из ненулевого числа операторов. Операторы отделяются друг от друга символом двоеточие (:), который для других целей в программе не используется. Последовательность может располагаться на нескольких строках, при этом разбивка оператора на 2 строки не допускается; если последовательность продолжается на следующей строке, в конце текущей строки стоит двоеточие. Последовательности операторов в тексте программы имеют уникальные номера. Таким образом, структура последовательности операторов следующая:
-каждая новая последовательность начинается с новой строки;
- в начале последовательности, до ее номера, состоящего не более чем из 8-ми десятичных цифр, могут присутствовать пробелы;
- после номера последовательности также могут присутствовать пробелы;
- оператор всегда начинается не с цифры;
- оператор нельзя разрывать на несколько строк, если оператор не последний, за ним (возможно через пробелы) следует двоеточие.
Переходы в программе осуществляются посредством операторов goto или gosub (эти ключевые слова могут быть записаны как с использованием заглавных, так и прописных букв, например GoSUb).
Вид операторов
goto номер последовательности
gosub номер последовательности
(между ключевыми словами и номером последовательности могут присутствовать пробелы).
Написать программу, которая читает из файла имя файла (имя файла вводится с клавиатуры), текст BASIC программы и перенумеровывает последовательности операторов так, чтобы
- в выходном файле порядок последовательностей совпадал с порядком последовательностей исходного файла, отсортированного по возрастанию номеров последовательностей;
- первая последовательность выходного файла имела номер f, а каждая следующая последовательность имела номер на d больше, чем предыдущая (f и d - натуральные числа, вводимые с клавиатуры).
Текст программы состоит не более чем из 100 строк, длина строки не превышает 80 символов.
Преобразованную BASIC-программу выводить в файл
имя_файла.OUT.
Входные данные корректны.
|