Sortieren von Feldern 

Problemstellung

Ein Programm soll den Mittelwert beliebig vieler Zahlen ermitteln und die Zahlen sortiert ausgegeben. Für unser Beispielprogramm werden die Zahlen wieder mit Zufallsgenerator erzeugt.

Ein einfaches Sortieren BUBBLESORT     

Einfacher Sortieralgorithmus, elementares Sortierverfahren, ein Sortieren durch (direktes) Austauschen. Die sortierten Elemente steigen wie Blasen (engl. Bubbles) auf.

Quelltext

program mittelwert_berechnen; {Demonstrationsprogramm zum Sortieren}
                              {und zur Mittelwertberechnung}
uses crt;
type zahlen  = array[1..15] of integer;
var zahlen_b         : zahlen;
    summe            : integer;
    {mittelwert      : real;}
    i, j, anzahl, nr : integer;
procedure bildschirm;
var i,j   :  integer;
begin
     clrscr;window(1,1,80,25);
     for i:=1 to 80 do
         for j:=1 to 25 do
         begin
           gotoxy(i,j);textbackground(white); write(#196);end;
     textcolor(black);gotoxy(1,1);
end;
procedure zufallszahlen(var zahlen_b :zahlen; var  anzahl : integer);
begin
  nr :=0;
  randomize;
  gotoxy(3,3);write('Demonstationsprogramm fr Mittelwertberechnung');
  gotoxy(3,5);write('und Sortieren von Zahlen (BUBBLESORT)');
  gotoxy(3,7);write('Wieviel Zahlen [Maximal bitte 15 Zahlen] ');
  readln(anzahl);
  gotoxy(3,9);
  for i :=1 to anzahl do
      begin
        nr := nr + 1 ;
        zahlen_b[i] := random(100) + 1;
        write(zahlen_b[i]:5);
      end;
end;
procedure durchschnitt(zahlen_b : zahlen; anzahl : integer);
var mittelwert : real;
begin
     summe := 0;
     for i := 1 to anzahl do
     summe := summe + zahlen_b[i];
     mittelwert := summe/anzahl;
     gotoxy(3,11); write('Die Summe btraegt:  ',summe);
     gotoxy(3,13);
     writeln('Und der Mittelwert dieser  ', anzahl,' Zahlen betraegt  ',mittelwert:5:2);
end;
procedure sortieren(var zahlen_b : zahlen);
var hilf : integer;
begin
     for i := 1 to anzahl -1 do
         for j := i +1 to anzahl do
             if zahlen_b[j] < zahlen_b[i] then
             begin
             {VERTAUSCHEN}
             hilf := zahlen_b[i];
             zahlen_b[i] := zahlen_b[j];
             zahlen_b[j] := hilf;
             end;
     gotoxy(3,17);writeln('Zahlen SORTIERT : ');
     gotoxy(3,19);
     for i := 1 to anzahl do write(zahlen_b[i]:5);
end;
{++++++++++++++++HAUPTPROGRAMM+++++++++++++++}
begin
     clrscr; bildschirm;
     textcolor(blue);
     zufallszahlen(zahlen_b,anzahl);
     readln;textcolor(red);
     durchschnitt(zahlen_b,anzahl);
     readln;
     sortieren(zahlen_b);
     readln;
end.