home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Multimedia 1995 August
/
IMM0895.BIN
/
magazin
/
optix
/
disk1
/
optxppac.set
/
SORTTEST.OPT
< prev
next >
Wrap
Text File
|
1995-04-25
|
4KB
|
169 lines
def(i)
def(j)
def(k)
defs(upper$)
defs(uppermem$)
defs(lower$)
defs(dum$)
defas(sort$,40,21)
defaw(sort,31)
procedure lower(s,l)
rem *** wandelt in der vorzubelegenden
rem *** globalen Stringvariable 'lower$'
rem *** ab Position 's' soviele Zeichen
rem *** in Kleinbuchstaben um, wie in
rem *** 'l' angegeben wurden. Ist 'l'=0,
rem *** so wird automatisch ab 's' bis
rem *** zum Stringende gewandelt. (Erwartet
rem *** außerdem globale Var 'dum$')
locals(i,j,k)
if s:=0
s:=1
endif
if l=0
len(lower$,l)
endif
for i:=s to l do
dum$:=lower$[i]
instr(dum$,'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ',j)
if j<>0
delete(lower$,i,1)
asc(dum$,k)
inc(k,32)
chr(dum$,k)
insert(dum$,lower$,i)
endif
next(i)
return
procedure upper(s,l)
rem *** wandelt in der vorzubelegenden globalen Stringvariable 'upper$'
rem *** ab Position 's' soviele Zeichen in Großbuchstaben um, wie in
rem *** 'l' angegeben wurden. Ist 'l'=0, so wird automatisch ab 's' bis
rem *** zum Stringende gewandelt. (Erwartet außerdem globale Var 'dum$')
locals(i,j,k)
if s:=0
s:=1
endif
if l=0
len(upper$,l)
endif
for i:=s to l do
dum$:=upper$[i]
instr(dum$,'abcdefghijklmnopqrstuvwxyzäöü',j)
if j<>0
delete(upper$,i,1)
asc(dum$,k)
dec(k,32)
chr(dum$,k)
insert(dum$,upper$,i)
endif
next(i)
return
procedure numsort(lim)
rem *** Sortiert das numer. Feld 'sort' aufsteigend (0 - 9)
rem *** 'lim' gibt dabei den höchsten zu sortierenden Feldindex an
locals(i,j,k,l)
for j:=1 to lim do
rem **********************************************
rem *** nur zur Demo - bitte anschließend löschen
for i:=1 to 30 do
setcolor(sort[i])
str(sort[i],4,dum$)
printat(380,20+i*8,dum$+' ')
next(i)
rem **********************************************
for k:=j+1 to lim do
if sort[j] > sort[k]
i:=sort[j] Einträge 'swappen'
l:=sort[k]
sort[j]:=l
sort[k]:=i
endif
next(k)
next(j)
return
procedure txtsort(lim)
rem *** Sortiert das String-Feld 'sort$' aufsteigend (A-Z).
rem *** 'lim' gibt dabei den höchsten zu sortierenden Feldindex an.
rem *** Die Prozedur erwartet zusätzlich die globale Stringvar 'dum$'
locals(j,k)
for j:=1 to lim do
rem **********************************************
rem *** nur zur Demo - bitte anschließend löschen
printtext(140,30,1,20,1)
rem **********************************************
for k:=j+1 to lim do
upper$:=sort$(j)
upper(1,0)
trim(upper$)
uppermem$:=upper$
upper$:=sort$(k)
upper(1,0)
trim(upper$)
if uppermem$ > upper$
dum$:=sort$[j]
sort$[j]:=sort$[k]
sort$[k]:=dum$
endif
next(k)
next(j)
return
begin
new(sort)
new(sort$)
sysfont(2,0)
gradation( 1, 63,20, 0,20,63, 0,63)
gradation( 64,127,20,20, 0,63,63, 0)
gradation(128,191, 0,20,20, 0,63,63)
gradation(192,255, 0,20, 0, 0,63, 0)
setcolor(255)
readtext('SORTTEXT.TXT',1,20)
printtext(30,30,1,20,1)
txtsort(20)
for i:=1 to 30 do
random(254,j)
sort[i]:=j+1
next(i)
sysfont(1,0)
for i:=1 to 30 do
str(sort[i],4,dum$)
printat(320,20+i*8,dum$)
next(i)
numsort(30)
pause(10000)
end