Einzelnen Beitrag anzeigen

Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.604 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer

  Alt 3. Nov 2020, 18:16

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:
  1. 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.
  2. 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.
Thomas Mueller
  Mit Zitat antworten Zitat