Delphi-Quellcode:
procedure TForm1.btn3Click(Sender: TObject);
var i, sum, anz : Integer;
Durchschnitt : Extended;
ArrayNoten: array[1..6] of Int32;
begin
sum:=0;
Durchschnitt:=0;
anz:=0;
//FillChar(ArrayNoten, SizeOf(ArrayNoten), 0); //Initialisierung Array
for i := 0 to length(ArrayNoten) - 1 do
//for I := (Low(ArrayNoten)) to (High(ArrayNoten))-1 do
begin
ArrayNoten[1]:=(strtoint(edt1.text)); //1
ArrayNoten[2]:=(strtoint(edt2.text)); //2
ArrayNoten[3]:=(strtoint(edt3.text)); //4
ArrayNoten[4]:=(strtoint(edt4.text)); //1
ArrayNoten[5]:=(strtoint(edt5.text)); //1
ArrayNoten[6]:=(strtoint(edt6.text)); //1
sum:= sum + ArrayNoten[i];
end;
anz:=SumInt(ArrayNoten);
Durchschnitt:= sum / anz;
lblDurchsch.Caption:=floattostr(Durchschnitt);
end;
Ich sehe da zwei Probleme:
- Du solltest die Zuweisungen auf ArrayNoten[] aus den Edit-Feldern vor die Schleife verschieben. Derzeit
werden sie in der Schleife jedes Mal alle neu zugewiesen. Das ist aber nicht der Grund für den Fehler.
- sum soll doch die Summe aller Noten sein. Dann muss sie berechnet werden als:
sum := sum + ArrayNoten[i]*i;
Denn Du hast die Note i jeweils ArrayNoten[i] mal.
Das ist der Grund für den Fehler.
FillChar ist nicht notwendig denn die Zuweisung erfolgt ja immer erst nach der Zuweisung auf das Array, damit ist es also initialisiert.