32 lines
1 KiB
Text
32 lines
1 KiB
Text
include c:\cxpl\stdlib;
|
|
char Dict(10,10);
|
|
int Entries;
|
|
|
|
proc BSort(A, N); \Bubble sort array A's key string into ascending order
|
|
char A; \address of array
|
|
int N; \number of items in array (size)
|
|
int B, I, J, T;
|
|
[B:= A; \B(I) accesses 32-bit pointers, not A(I) 8-bit bytes
|
|
for J:= N-1 downto 0 do
|
|
for I:= 0 to J-1 do
|
|
if StrCmp(A(I,1), A(I+1,1)) > 0 then
|
|
[T:= B(I); B(I):= B(I+1); B(I+1):= T]; \swap pointers
|
|
];
|
|
|
|
proc AddEntry(Letter, Greek); \Insert entry into associative array
|
|
char Letter, Greek;
|
|
[Dict(Entries,0):= Letter;
|
|
StrCopy(Greek, @Dict(Entries,1));
|
|
Entries:= Entries+1; \(limit checks ignored for simplicity)
|
|
];
|
|
|
|
int I;
|
|
[Entries:= 0;
|
|
AddEntry(^A, "alpha"); \add items in arbitrary order
|
|
AddEntry(^D, "delta");
|
|
AddEntry(^B, "beta");
|
|
AddEntry(^C, "gamma");
|
|
BSort(Dict, Entries); \sort entries by Greek name
|
|
for I:= 0 to Entries-1 do \show sorted entries
|
|
[ChOut(0, Dict(I,0)); ChOut(0, ^ ); Text(0, @Dict(I,1)); CrLf(0)];
|
|
]
|