Ist doch ein schönes Beispiel mal was über Array's zu lernen. Hier mal ein Ansatz, aber ohne Gewähr, da nur hier in den Editor grtippt:
Delphi-Quellcode:
interface
Type
TNotenliste = array of integer;
TForm1=class(TForm)
//alles was man so auf der Form hat
private
//...
Notenliste:TNotenliste;
function NotenAnzahl:integer;
function NotenSumme:integer;
function NotenDurschnitt:Float;
public
//...
procedure NoteHinzu(Note:integer);
procedure NoteWeg;
procedure MemoSchreiben;
end;
implementation
procedure TForm1.NoteHinzu(Note:integer);
begin
//Hier ggf. erst prüfen, ob Note zw. 1 und 6
//Hier ggf. erst prüfen, ob maximale Notenzahl (z.B. 15) schon voll ist
SetLength(Notenliste,High(Notenliste)+2) //Array um einen Platz vergrößern
//High(Array)+2=Length(array)+1
Notenliste[High(Notenliste)]:=Note;
end;
procedure TForm1.NoteWeg;
begin
//Einfach Array mit SetLength um 1 verkleinern und so das letzte Element löschen
end;
procedure TForm1.MemoSchreiben;
var i:integer;
begin
Memo1.Clear;
for i:=Low(Notenliste) To High(Notenliste) do
Memo1.Lines.Add(IntToStr(Notenliste[i]));
Memo1.Lines.Add('Durschnitt: '+FloatToStr(Notendurschnitt));
end;
function TForm1.NotenAnzahl:integer;
begin
//Funktion Length benutzen
end;
function TForm1.NotenSumme:integer;
begin
//Über das Array iterieren wie bei MemoSchreiben
end;
function TForm1.NotenDurschnitt:Float;
begin
if NotenAnzahl>0 then
Result:=NotenSumme/NotenAnzahl //ggf. noch runden
else
Result:=0;
end;