______________________________________________________________

Aufgabe 2.1
___________
Quelltext:

MODULE sort EXPORTS Main;
IMPORT IO;

VAR arraysort: ARRAY [1..21] OF INTEGER; (* zu sortierendes Datenfeld *)
VAR a: INTEGER :=1; (* dient als Zaehler *)

BEGIN

(****************************************************************************)
(* 20 mal 1 Zahl in jeweils hoeheren Bereich des Array einlesen und anschl. *)
(* nacheinander pruefen, ob darunterliegende Zahlen groesser sind.          *)
(* Wenn ja, dann austauschen.                                               *)
(****************************************************************************)


FOR i:=1 TO 20 DO

  IO.Put("Bitte geben sie Zahl ");
  IO.PutInt(i);
  IO.Put(" von 20 ein: ");
  arraysort[FIRST(arraysort)+i-1] := IO.GetInt();

  (*Pruefe solange bis 1. Element des Array erreicht: ist vorhergenede Zahl*)
  (*groesser? Wenn ja, tausche aus. Benutze letztes Element als Zwischen-  *)
  (*speicher.                                                              *)
  WHILE i-a>0 DO
    (* Durch umkehren von > wird absteigend sortiert. *)
    IF arraysort[FIRST(arraysort)+i-a-1] > arraysort[FIRST(arraysort)+i-a] THEN
      arraysort[LAST(arraysort)]:= arraysort[FIRST(arraysort)+i-a-1];
      arraysort[FIRST(arraysort)+i-a-1]:= arraysort[FIRST(arraysort)+i-a];
      arraysort[FIRST(arraysort)+i-a]:= arraysort[LAST(arraysort)];
    ELSE
      EXIT;
    END;
    INC(a);
  END;

  a:=1

END;

IO.Put("\nIhre eingegebenen Zahlen aufsteigend sortiert:\n");

FOR i:=FIRST(arraysort) TO LAST(arraysort)-1 DO
  IO.PutInt(arraysort[i]);
  IO.Put(" ");
END;

IO.Put("\n");

END sort.

Testlauf:

Bitte geben sie Zahl 1 von 20 ein: 3
Bitte geben sie Zahl 2 von 20 ein: 1
Bitte geben sie Zahl 3 von 20 ein: 20
Bitte geben sie Zahl 4 von 20 ein: -1
Bitte geben sie Zahl 5 von 20 ein: -3
Bitte geben sie Zahl 6 von 20 ein: 35
Bitte geben sie Zahl 7 von 20 ein: 546
Bitte geben sie Zahl 8 von 20 ein: 25
Bitte geben sie Zahl 9 von 20 ein: 3
Bitte geben sie Zahl 10 von 20 ein: 0
Bitte geben sie Zahl 11 von 20 ein: 12
Bitte geben sie Zahl 12 von 20 ein: 13
Bitte geben sie Zahl 13 von 20 ein: 14
Bitte geben sie Zahl 14 von 20 ein: 15
Bitte geben sie Zahl 15 von 20 ein: 23
Bitte geben sie Zahl 16 von 20 ein: 34
Bitte geben sie Zahl 17 von 20 ein: 4
Bitte geben sie Zahl 18 von 20 ein: 24
Bitte geben sie Zahl 19 von 20 ein: 56
Bitte geben sie Zahl 20 von 20 ein: 216

Ihre eingegebenen Zahlen aufsteigend sortiert:
-3 -1 0 1 3 3 4 12 13 14 15 20 23 24 25 34 35 56 216 546

Testlaufende.