же не манж па сис жур...
Суть проблемы такова: Есть некая таблица данных. Ее нужно распечатывать в ДОСе (да! да!) на матричном принтере. На отдельных листах. При этом на каждом листе нужно печатать шапку. На первом листе шапка толстая, а на последующих - попроще. На каждом листе нужно печатать текст "Лист NNN из MMM листов", то есть общее число листов нужно вычислить заранее. После таблицы идет многострочная подпись. Необходимо, чтобы а) подпись не разрывалась, и б) на листе с подписью было не менее одной строки данных, ну и само собой шапка.
Т.е., имеем варианты:
- все влезает на один лист (толстая шапка, таблица, подпись)
- на один лист влезает все, кроме подписи (всей, или куска), поэтому на первом листе печатаем на одну строку меньше, чем можно было бы, а на втором - тонкую шапку, одну строку таблицы и подпись.
- все влезает на два листа (шапка+кусок таблицы до отказа, шапка+остаток таблицы+подпись)
- и так далее.
Есть большое желание написать процедуру, которая принимала бы, как параметры, число строк таблицы, число строк на листе, число строк двух видов шапок и подписи, и исходя из этого рассчитывала общее число листов и формировала массив количеств строк таблицы на каждом листе (во как загнул!). Есть ощущение, что это возможно , но вот ведь... не получаецца. В других программах я просто при печати каждой строки проверял, как там у меня обстоят дела с подписью? Не пора ли начинать ее втискивать? А поскольку тут надо заранее рассчитать число листов... так уже сразу рассчитать и все длины страниц, тогда будет очень простой цикл собственно печати.
Интересуют какие-нибудь свежие идеи, можно в виде псевдокода...