text-formatting program problem...

S

shoo

Any one know how to do this? thank


Write a simple text-formatting program that produces neatly printed
output from input text containing embedded command lines that
determine how to format the output; all lines begin with a period are
command lines. The task of the program is to collect words from input
lines, fill output lines with those words, adjust the margins, and
print the result. Your programs should handle the commands shown in
Table 1 and should make use of functions.


Table 1 Text formatting commands for Lab #2
Command

..ce n
..ce
..in ±n
..in n
..in
..po ±n
..po n
..po
..ll n
..ll
..ls n
..ls
..sp n
..sp
..ad
..na
Description

Centre the next n lines (n might be 0)
Centre the next line
Increase (decrease) the indentation by n spaces
Set the indentation to n spaces
Reset indentation to default (0 spaces)
Increase (decrease) the left margin (page offset) by n spaces
Set the left margin (page offset) to n spaces
Reset margin to default (10 spaces)
Set line length to n spaces
Reset line length to default (100 spaces)
Set interline spacing to n (n = 2 gives double spacing)
Reset to single spacing
Put (n * CurrentLineSpacing) blank lines in the output
Put (1 * CurrentLineSpacing) blank lines in the output
Start adjustment of right margin (default; works in fill mode only)
Stop adjustment of right margin


When the program is filling output lines with input words, it is said
to be operating in fill mode. When not operating in fill mode, lines
should be printed exactly as they appear in the input. When operating
in fill mode, the program also may have to pad each output line evenly
with blank characters to produce a straight right margin; the program
is said to be operating in adjust mode when operating in this manner.
When not in adjust mode, the program will fill output lines but the
right margin will be jagged.

Your program should begin execution using the following default
values: line length is 100 characters, line spacing is 1 (single
spacing), margin is 10 characters, indentation level is 0 characters.
The program begins execution in fill mode, adjusting the right margin.
These defaults should remain in effect until changed by the
appropriate commands. A period, question mark, or exclamation point
should be followed by 2 blank spaces in the output, unless it is at
the end of an output line. A new paragraph should be separated from
the previous by an extra CurrentLineSpacing lines.
 
J

Joona I Palaste

shoo said:
Any one know how to do this? thank

(Snip homework assignment copied more-or-less verbatim)

We don't do other people's homework for them. Please try it yourself at
first, and if you get stuck, show your code and explain what you are
having problems first. You can also ask your professor for help.
 
C

Chris Croughton

Any one know how to do this? thank

Yes, I've written three (one in CORAL-66, one in DEC Fortran-77, one in
C++). And various people wrote runoff, roff, nroff, troff, groff and
others...

I've rewritten parts from scratch, a version in C is used for formatting
help text in xcpp (http://www.keristor.co.uk/stuff/xcpp-0.5.6.tar.gz),
it took me about 30 minutes (it isn't quite as complete, and it doesn't
use the .xx format, but the principle is the same).
Write a simple text-formatting program that produces neatly printed
output from input text containing embedded command lines that
determine how to format the output; all lines begin with a period are
command lines. The task of the program is to collect words from input
lines, fill output lines with those words, adjust the margins, and
print the result. Your programs should handle the commands shown in
Table 1 and should make use of functions.

You could get the code of groff, it's GPL.
Table 1 Text formatting commands for Lab #2

Sounds like homework/coursework to me.

Chris C
 
R

Randy Howard

Nal bar xabj ubj gb qb guvf? gunax

Lrf, ohg gur fbyhgvba vf n pnershyyl thneqrq vaqhfgel frperg.
V pbhyq fubj lbh, ohg gura V'q unir gb znxr lbh jngpu ernyvgl
GI.
 
T

Thomas Matthews

shoo said:
Any one know how to do this? thank

Your first step should be to decide whether to
write this in C or C++. You have posted to
both and These are two different newsgroups and languages.

Please see my reply to your posting in

If you decide to post to more than one newsgroup,
please supply them all on the "To:" field, as
I have done. This will allow others to see
the conversation as a whole. It will allow
you to only need to access one newsgroup,
not both, especially when replying.


--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.comeaucomputing.com/learn/faq/
Other sites:
http://www.josuttis.com -- C++ STL Library book
http://www.sgi.com/tech/stl -- Standard Template Library
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,769
Messages
2,569,577
Members
45,052
Latest member
LucyCarper

Latest Threads

Top