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[i] 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 id="4d2c06e071ea6">
procedure BalkenDiagramm(arr:Array of Integer; canvas:Integer);
var Rand:Integer;
    MaxBreite:Integer;
    MaxHoehe:Integer;
    balkenBreite, balkenMaxValue, i,y:integer;
begin
 selectCanvas(canvas);
 canvas_clear();
 Rand := 50;
 MaxBreite := 400 - 2*Rand;
 MaxHoehe  := 350 - 2*Rand;
 balkenBreite := MaxBreite div length(arr);

 // Maximum im Array suchen
 balkenMaxValue := 0;
 for i := 0 to length(arr)-1 do begin
  if arr[i] > balkenMaxValue then balkenMaxValue := arr[i];
 end;

 // Balken zeichnen
 for i := 0 to length(arr)-1 do begin
  y := MaxHoehe/balkenMaxValue*arr[i];
  canvas_rect(Rand+i*balkenBreite,MaxHoehe-y,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>&nbsp;</td>
<td align="center">
'''Geordnete Zufallszahlen:'''
<canvas w="400" h="300"></canvas>
</td>
</tr>
</table>

<run id="4d2761b36ad6c">
ZufallsZahlen(Zahlen,20,10,100);
BalkenDiagramm(Zahlen,1);
BubbleSort(Zahlen);
BalkenDiagramm(Zahlen,2);
writeln('Fertig');
</run>