Помощь - Поиск - Пользователи - Календарь
Полная версия: Расстановка переносов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
unnamed_499
Имеется текстовый файл (файловая переменная объявлена, как TEXT). Длина строки фиксирована - 50 или 70 символов. Используется графический режим. Необходимо расставить переносы в этом текстовом файле. blink.gif Вот и всё. Пожалуйста, помогите.
Бродяжник
Не до конца ясно, что находится в текстовом файле. Текст, уже разбитый на строки фиксированной длины? Тогда зачем переносы? Текст, разбитый на строки произвольной длины? Есть ли в нем уже какие-либо переносы? И могут ли они там быть? На каком языке текст (если это вообще текст на человеческом языке)? Нужно ли делать выравнивание текста по обоим краям? Есть ли в тексте абзацы, и как они выделены? Какую роль во всем этом играет графический режим?
Общие идеи могут быть следующие:
Пишем функцию, позволяющую считывать текст из файла по словам, игнорируя разбиение на строки и убирая избыточные пробелы.
Потом читаем очередное слово из файла и смотрим, можно ли его прибавить к строке вывода, или уже нужно переносить? Если можно прибавить, прибавляем. Если уже нельзя, смотрим, можно ли его разорвать на две части.
Если можно, прибавляем к строке вывода первую половинку слова и знак переноса, и пишем строку вывода в выходной файл, после чего инициализируем строку вывода второй половинкой.
Если слово разорвать нельзя, тогда пишем накопленную ранее строку вывода в файл и инициализируем ее непоместившимся словом.
И так, пока не прочитаем весь файл.
Если нужно выравнивать по краям, то перед записью строки вывода в файл проверяем ее длину и при необходимости раздвигаем слова.
Задача-то не такая уж тривиальная, если делать ее грамотно.
Jaxx
Попользуйся поиском по форуму. мне когда-то пришлось писать нечто подобное. Тут на форуме должно быть.

Вот кстати, может пригодится.
Расстановка переносов
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.