program StudentList final int MAXLEN = 20; class Student { int matrNr; char[] name; } Student[] list; int stCnt; { void printString (char[] str) int i; { if (str != null) { i = 0; if (i < len(str)) { print(str[i]); i++; again; } } } void init () { list = new Student[MAXLEN]; stCnt = 0; } void add (Student s) int i; { /* insert sorted by matrNr */ i = stCnt - 1; if (i >= 0 && s.matrNr < list[i].matrNr) { list[i+1] = list[i]; i--; again; } list[i+1] = s; stCnt++; } int find (int matrNr) int l, r, x; { /* binary search */ l = 0; r = stCnt-1; if (l <= r && matrNr != list[x].matrNr) { x = (l+r)/2; if (matrNr < list[x].matrNr) r = x-1; else l = x+1; again; } if (matrNr == list[x].matrNr) return x; return -1; } void printStudent (int i) { print('m'); print('['); print(i); print(']'); print('='); print(list[i].matrNr); print(','); printString(list[i].name); print('\n'); } void main() Student s; { init(); s = new Student; s.matrNr = 1234567; s.name = new char[3]; s.name[0] = 'X'; s.name[1] = '\\'; s.name[2] = 'Y'; add(s); s = new Student; s.matrNr = 9876543; s.name = new char[4]; s.name[0] = 'M'; s.name[1] = 'r'; s.name[2] = '.'; s.name[3] = 'X'; add(s); s = new Student; s.matrNr = 9090900; s.name = new char[2]; s.name[0] = 'A'; s.name[1] = 'l'; add(s); printStudent(0); printStudent(1); printStudent(2); print(9876543); print(' '); printString(list[find(9876543)].name); print('\n'); print(1234567); print(' '); printString(list[find(1234567)].name); print('\n'); print(9090900); print(' '); printString(list[find(9090900)].name); print('\n'); } }