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 :
- 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. - 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. - Definiere den Datentyp TPunkt als array [ 1 . . 3 ] of real und schreibe eine Funktion, die zu zwei Punkten den Abstand bestimmt.
Verwende die Formel
- Von einer 3 x 3 - Matrix soll die Determinante berechnet werden.
Einführung in das Programmieren mit DELPHI
