40 lines
1.3 KiB
Plaintext
40 lines
1.3 KiB
Plaintext
theString$ = "Given$a$text$file$of$many$lines,$where$fields$within$a$line$" _
|
|
+ "are$delineated$by$a$single$'dollar'$character,$write$a$program" _
|
|
+ "that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$"_
|
|
+ "column$are$separated$by$at$least$one$space." _
|
|
+ "Further,$allow$for$each$word$in$a$column$to$be$either$left$" _
|
|
+ "justified,$right$justified,$or$center$justified$within$its$column."
|
|
|
|
x = shoTable(theString$,"left",6)
|
|
x = shoTable(theString$,"right",6)
|
|
x = shoTable(theString$,"center",6)
|
|
end
|
|
|
|
FUNCTION shoTable(theString$,align$,across)
|
|
print "------------ align:";align$;" -- across:";across;" ------------"
|
|
dim siz(across)
|
|
b$ = " "
|
|
while word$(theString$,i+1,"$") <> ""
|
|
siz(i mod across) = max(siz(i mod across),len(word$(theString$,i + 1,"$")))
|
|
i = i + 1
|
|
wend
|
|
for i = 0 to across - 1
|
|
siz(i) = siz(i) + 1
|
|
if siz(i) and 1 then siz(i) = siz(i) + 1
|
|
next i
|
|
|
|
i = 0
|
|
a$ = word$(theString$,i+1,"$")
|
|
while a$ <> ""
|
|
s = siz(i mod across) - len(a$)
|
|
if align$ = "right" then a$ = left$(b$,s);a$
|
|
if align$ = "left" then a$ = a$;left$(b$,s)
|
|
if align$ = "center" then a$ = left$(b$,int(s / 2));a$;left$(b$,int(s / 2) + (s and 1))
|
|
print "|";a$;
|
|
i = i + 1
|
|
if i mod across = 0 then print "|"
|
|
a$ = word$(theString$,i+1,"$")
|
|
wend
|
|
print
|
|
end function
|