1. Задание
Подготовить текст программы, написанной на языке Си, к выводу на принтер, для чего выполнить следующие действия:
- выровнять текст по ширине;
- заменить символы табуляции на заданное число пробелов;
- добавить в каждую строку знак "конец строки";
- разбить текст на страницы заданного размера с помощью вставки в текст символа "жесткий" разделитель страниц.
Параметры (ключи) запуска:
- размер страницы (число строк на странице);
- число пробелов для знака табуляции;
- размер отступа слева.
2. Анализ задания
Исходные данные:
• текстовый файл с текстом программы, написанном на языке Си;
• размер страницы (число строк на странице), при котором после определённого количества строк будет ставиться символ разрыва страниц;
• число пробелов для знака табуляции;
• размер отступа слева.
Для открытия файла пользователь должен ввести его имя (с расширением). Сохранение результата работы программы осуществляется в каталог, где находится исходный файл. Имена файлов задает пользователь. Файл с текстом программы должен быть создан, его отсутствие недопустимо.
3. Постановка задачи
3.1 Функции программы
Программа должна обеспечить:
• открытие файла с исходным текстом;
• ввод ключей запуска с клавиатуры;
• преобразование файла;
• вывод текста преобразованного файла на экран;
• сохранение результата в файл, указанный пользователем.
3.2 Интерфейс программы
Пользователю необходимо обеспечить:
• возможность ввести параметры;
• возможность открыть файлы;
• возможность ввести требуемые параметры;
• возможность сохранить полученные файлы.
Программа имеет главное меню, содержащее пункты (рис. 1):
1. «Выбрать исходный файла»;
2. «Выбрать конечный файл для сохранения»;
3. «Задать ключи запуска»;
4. «Выполнить обработку»;
5. «Выход из программы».
Рис. 1. Главное меню программы
При выборе пунктов 1 и 2 («Выбрать исходный файл» и «Выбрать конечный файл») пользователь может ввести имена исходного и конечного файла.
При выборе пункта 3 («Задать ключи запуска) пользователь может ввести с клавиатуры ключи запуска, необходимые для преобразования файла
При выборе пункта 4 («Выполнить обработку») будет произведена требуемая обработка текста программы, результат которой будет выведен в файл, указанный в пункте 2, а также на экран.
При выборе 5 пункта («Выход из программы») будет произведён выход из программы.
Пользователь может перемещаться по пунктам меню с помощью клавиш клавиатуры «вверх», «вниз», а также осуществлять выбор пункта меню с помощью клавиши «Enter».
3.3 Описание ограничений, накладываемых на исходные данные
Исходные данные представляют собой текстовый файл с текстом программы на языке СИ. Для правильного выполнения поставленной задачи должны выполняться следующие ограничения:
Ограничение 1. Будем считать, что размер строки, по которой будет производиться выравнивание по ширине, равен 80 символам;
Ограничение 2. исходный текстовый файл должен находиться в одном каталоге с файлами программы;
Ограничение 3. Исходный файл должен быть синтаксически правильным, а также он должен иметь определённую структуру;
Ограничение 4. Если строка полностью не помещается в указанный размер, то она разделяется на несколько строк с выравниванием каждой из строк.
3.4 Формы представления результатов работы программы
Результатом правильной работы программы является текстовый файл, содержащий текст исходной программы, обработанный по заданным требованиям. Текст результирующего файла выводится в консольном окне.
3.5 Структуры данных
В программе на языке Паскаль для считывания текста из файла и дальнейших действий над ним будут использоваться переменные типа char и string.
Основные переменные, располагающиеся в модуле Change.pas, которые будут использоваться для преобразования текста исходной программы:
• строковые переменные: spaces1, Strng1, strKolvoProbelov – хранение заданного количества пробелов для замены знака табуляции и отступов, а также для промежуточных значений; fi, fo– для обозначения названий исходного и результирующего файлов; strFollowString, strWordString – считывание определённого количества символов.
• символьные переменные: q – для считывания и записи отдельных символов;
• файловая переменная: f1, fo – для работы с файлами;
• переменные целого типа-параметры: w - размер страницы, p - количество пробелов для знака табуляции, m- количество отступов; i –для организации цикла, cur –для обозначения позиции символа в строке.
Используется модуль crt, отвечающий за работу