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.
|
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.