let type IntArray ~ record content: array 80 of Integer, length: Integer end; ! Liest Eingabe und speichert es in intarray proc readArray(var intarray: IntArray) ~ let var i: Integer; var testeof : Boolean in begin intarray.length := 0; getint(var i); eof(var testeof); while i \= 0 /\ \ testeof do begin intarray.content[intarray.length] := i; intarray.length := intarray.length + 1; getint(var i); eof(var testeof); end; end; ! gibt Inhalt des Arrays auf den Bildschirm proc writeArray(var intarray: IntArray) ~ let var i: Integer in begin i := 0; while i < intarray.length do begin putint(intarray.content[i]); i := i+1; puteol() end; end; ! Teilt intarray in zwei Teile auf ! intarray.length muss größer als 1 sein! proc splitArray(var intarray: IntArray, var ia1: IntArray, var ia2: IntArray) ~ let var i: Integer; var j: Integer in begin i := 0; j := intarray.length / 2; while i= 2 then begin splitArray(var intarray, var ia1, var ia2); mergesort(var ia1); mergesort(var ia2); mergeArray(var intarray, var ia1, var ia2) end else; end; var intarray: IntArray in begin readArray(var intarray); puteol(); mergesort(var intarray); writeArray(var intarray); end