Einführung in das Programmieren mit DELPHI  

15. Array-Typen

Arrays haben eine festgelegte Anzahl von Komponenten eines bestimmten Datentyps.
Man kann sie sich am besten als eine ein- oder mehrreihige Anordnung von nummerierten Schubladen vorstellen, in die Zahlen oder Texte gelegt werden.

Beispiele :

type TStimmen = array [ cdu . . fdp ] of longint;

type TVektor = array [ 1 . . 34 ] of real;

type TMatrix = array [ 1 . . 15 ,1 . . 3 ] of real;

Als Index sind alle ordinalen Typen mit endlich vielen Werten zulässig.

Meistens sind es Teilbereiche aus integer.

 

Anwendung : 

Ein eindimensionales Array x mit 100 Ganzzahlen soll mit Zufallszahlen gefüllt und in einem Memo angezeigt werden.
Anschließend sollen ihr Mittelwert, sowie ihr Minimum und Maximum bestimmt werden.

unit Unit1;

interface
 . . .

const n =100;

var
  Form1: TForm1;
  x : array[1..n] of integer;

implementation

{$R *.dfm}

procedure TForm1.BtnNeuClick(Sender: TObject);
var i:integer;
begin
  for i:=1 to n do
    x[i] := Random(1000);
  Memo1.Clear;
end;

procedure TForm1.BtnAnzeigenClick(Sender: TObject);
var i:integer;
begin
  for i:=1 to n do
    Memo1.Text := Memo1.Text + IntToStr(x[i]) + ', ';
  Memo1.Lines.Add('');
  Memo1.Lines.Add('');
end;

procedure TForm1.BtnStatistikClick(Sender: TObject);
var i,s,p:integer;
begin
  s := 0;
  for i:=1 to n do
    s := s + x[i];
  Memo1.Lines.Add('Mittelwert '+FloatToStr(s/100));

  p := 1;
  for i:=1 to n do
    if x[i]<x[p] then p:=i;
  Memo1.Lines.Add('Minimum ' + IntToStr(x[p]));

  p := 1;
  for i:=1 to n do
    if x[i]>x[p] then p:=i;
  Memo1.Lines.Add('Maximum ' + IntToStr(x[p]));
end;

Erweiterung

Um auch noch den Median bestimmen zu können, sollen die Zahlen der Größe nach sortiert werden.

Das einfachste Sortierverfahren ist Bubble-Sort.

Dabei vergleicht man immer zwei benachbarte Zahlen. Ist die erste Zahl größer als die zweite, werden sie vertauscht. Im ungünstigsten Fall steht die kleinste Zahl an letzter Stelle, deshalb muss das Ganze n-mal wiederholt werden.

procedure TForm1.BtnSortierenClick(Sender: TObject);
var i,j,h : integer;
begin
    for i:=1 to n do
      for j:=1 to n-1 do
        if x[j]>x[j+1] then
          begin
            h := x[j];
            x[j] := x[j+1];
            x[j+1] := h;
          end;
end;

procedure TForm1.BtnMedianClick(Sender: TObject);
var median: real;
begin
  if odd(n) then
      median := x[n div 2]
  else
      median := (x[n div 2] + x[(n div 2)+1])/2;
  Memo1.Lines.Add('Median '+FloatToStr(median));
end;

end.

Aufgaben :

  1. Mit dem Funktionsterm  Random( 6 )+1  kann ein Würfel simuliert werden.
    Schreibe ein Programm das in einem array [ 1 . . 6 ] of integer   bei 100 Würfen mitzählt, wie oft die Ergebnisse 1, 2, ... , 6 aufgetreten sind.

  2. In einem zweidimensionalen  array[ 1 . . 16 , 1 . . 3 ] of integer; sollen die Klausurergebnisse eines Kurses eingegeben werden ( 16 Schüler, 3 Klausuren ).
    Danach sollen die Notenmittel der Klausuren und der Schüler berechnet werden.

  3. Definiere den Datentyp  TPunkt als array [ 1 . . 3 ] of real  und schreibe eine Funktion, die zu zwei Punkten den Abstand bestimmt.
    Verwende die Formel  

  4. Von einer 3 x 3 - Matrix soll die Determinante berechnet werden.

» Lösung

© 2008 : Bernd Schultheiss