All pastes #471439 Raw Edit

Untitled

public text v1 · immutable
·published 2007-05-04 22:03 UTC
rendered paste body
Постановка задачи.

Написать слово, преобразующее входную строку в текст, выровненный по
ширине  экрана,  таким  образом, чтобы каждая новая строка на экране
отделялась  от  предыдущей  символами CRLF (0x0D 0x0A), а промежутки
между  словами  были  заполнены  необходимым  количеством  пробелов,
достаточным  для  выравнивания  правого края строки в одну линию, не
пересекающую  позицию  p.  Разрывать  слова  на части нельзя - можно
переносить на следующую строку целиком, либо, если слово оказывается
шире  требуемой  ширины  строки,  оставлять в строке целиком. Каждый
символ  занимает  один  байт  пространства  в памяти. Каждый символ,
включая  пробельные  и знаки препинания, имеет одинаковую ширину при
отображении.   Получаемая   на   входе   строка  может  состоять  из
произвольного  количества  слов,  отделенных пробельными символами и
символами  переноса  на следующую строку. Знаки препинания считаются
частью слов.

\ на входе слово получает строку в виде адрес + длинна
\ и требуемую ширину строк в символах.
\ на выходе должен быть получен адрес области в памяти, хранящей
\ полученный набор строк.
: format-text ( asc # p --> asc # )

              ;