Einführungskurs/Zufallszahlen, BubbleSort, Balkendiagramme (Pascal)
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
== Definition und Ausgabe eines eindimensionalen Arrays ==
<code id="4d2c06e071d19">
var Zahlen:Array of Integer;
procedure fillZahlen(n:Integer);
var i:integer;
begin
// -5,-4,-3...10
setArrayLength(Zahlen,n);
for i := 0 to n-1 do Zahlen[i] := -5+i;
end;
procedure ZahlenAusgabe(liste:Array of Integer);
var i:integer;
begin
for i := 0 to length(liste)-1 do begin
if i = length(liste)-1 then
writeln(liste[i]) else
write(liste[i]+', ');
end;
end;
</code>
<run id="4d2c06e071f79">
fillZahlen(15);
ZahlenAusgabe(Zahlen);
</run>
== Zufallszahlen ==
<code id="4d2c06e071d9e">
procedure ZufallsZahlen(var arr:Array of Integer; n,minimum,maximum:Integer);
var i:Integer;
begin
setArrayLength(arr,n);
for i := 0 to n-1 do begin
arr[i] := random(maximum-minimum+1)+minimum;
end;
end;
</code>
<run id="4d2c06e071ffe">
ZufallsZahlen(Zahlen,20,10,200);
ZahlenAusgabe(Zahlen);
</run>
== BubbleSort ==
<code id="4d2c06e071e1c">
procedure BubbleSort(var arr:Array of integer);
var h,i,j:Integer;
begin
for j := 0 to length(arr)-1 do begin
for i := j to length(arr)-1 do begin
if arr[i] < arr[j] then begin
h := arr[i];
arr[i] := arr[j];
arr[j] := h;
end;
end;
end;
end;
</code>
<run id="4d06a8dde4fb5">
ZufallsZahlen(Zahlen,20,10,100);
ZahlenAusgabe(Zahlen);
writeln('Sortiert:');
BubbleSort(Zahlen);
ZahlenAusgabe(Zahlen);
</run>
==Darstellung im Balkendiagramm ==
<code>
procedure BalkenDiagramm(arr: Array of integer; canvas: integer);
var Rand, MaxBreite, MaxHoehe, i: integer;
balkenBreite, balkenMinValue, balkenMaxValue, y, y0: real;
begin
selectCanvas(canvas);
canvas_clear();
Rand := 50;
MaxBreite := 400 - 2*Rand;
MaxHoehe := 300 - 2*Rand;
balkenBreite := MaxBreite/length(arr);
// Minimum und Maximum im Array suchen
balkenMinValue := 0;
balkenMaxValue := 0;
for i := 0 to length(arr)-1 do begin
if arr[i] < balkenMinValue then balkenMinValue := arr[i];
if arr[i] > balkenMaxValue then balkenMaxValue := arr[i];
end;
// Balken zeichnen
y0 := balkenMinValue/(balkenMaxValue-balkenMinValue)*MaxHoehe+Rand+MaxHoehe;
for i := 0 to length(arr)-1 do begin
y := -MaxHoehe/(balkenMaxValue-balkenMinValue)*arr[i];
canvas_rect(Rand+i*balkenBreite,y0,balkenBreite,y);
end;
end;
</code>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
'''Ungeordnete Zufallszahlen:'''
<canvas w="400" h="300"></canvas>
</td>
<td> </td>
<td align="center">
'''Geordnete Zufallszahlen:'''
<canvas w="400" h="300"></canvas>
</td>
</tr>
</table>
<run id="4d2c0e84dc182">
ZufallsZahlen(Zahlen,50,0,1000);
BalkenDiagramm(Zahlen,1);
BubbleSort(Zahlen);
BalkenDiagramm(Zahlen,2);
writeln('Fertig');
</run>