![]() |
Notendurchschnitt berechnen und Initialisierung eines Array of integer
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich wollte eigentlich eine ganz einfache Notendurchschnittsberechnung mit einem Array of integer programmieren, doch ich bekomme es einfach nicht hin. An der Stelle der ersten Summenbildung ist das ArrayNoten[i] vermutlich nicht initialisiert und gibt daher irgendwelche Zufallszahlen aus und verfälscht damit das Ergebnis. Wie kann ich das ArrayNoten[i] initialisieren oder liegt der Fehler ganz wo anders? Beim Suchen nach Initialisierung von Array of integer fand ich folgende Lösung: FillChar(ArrayNoten, SizeOf(ArrayNoten), 0); Aber wo muss ich diese Initialisierung in mein Programm einbauen, damit es funktioniert? So wie es jetzt ist geht es nicht. Das vollständige Programm liegt bei.
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; |
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
hallo,
hilft das hier System.Math.Mean gruß |
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
Schau dir mal deine Schleife an, die macht ja keinen Sinn, denn du benutzt nirgendwo die Schleifenvariable i. Du berechnest in der Schleife sum usw... Die werden ja immer größer. und und und
|
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
Zitat:
|
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
Wozu brauchst du überhaupt ein Array? Auf dem Tablet getippt, daher rudimentär + ungetestet:
Delphi-Quellcode:
Und falls es doch mit einem Array sein soll:
For i := 1 to 6 do
Inc(sum,StrToInt(FindComponent('edt' + i.ToString).Text); Durchschnitt := sum / 6;
Delphi-Quellcode:
Besser ist
For i := Low(Notenarray) to High(Notenarray) do
Notenarray[i] := StrToInt(FindComponent('edt' + i.ToString).Text); For i := 1 to 6 do Inc(sum,Notenarray[i]);
Delphi-Quellcode:
, weil FindComponent darauf angewiesen ist.
1 to 6
|
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
Danke #dummzeuch.
Ich habe Deine Hinweise berücksichtigt und selbst noch einen weiteren Fehler gefunden. Jetzt rechnet er den Notendurchschnitt exakt aus. Ich habe die Schleife dahin verändert:
Delphi-Quellcode:
also -1 weggelassen.
for i := 0 to length(ArrayNoten) do
Auch den anderen vielen Dank für Eure Mühe. |
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
Aus Interesse: Wozu brauchst du das Array?
|
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
eigentlich brauche ich das array nicht. Es war lediglich eine mir selbst gestellte Aufgabe, die ich nur sehr schwerfällig lösen konnte.:oops:
Anders geht es natürlich auch und möglicherweise viel besser. |
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
Zitat:
Wenn Du bei length(ArrayNoten) die -1 weglassen willst, dann solltest Du besser Low(ArrayNoten) to High(ArrayNoten) schreiben. Ohne -1 gibt es jetzt einen Überlauf 0,1,2,3,4,5,6 sind nämlich 7 Array-Zugriffe, und keine 6. |
AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
Danke #Rollo62: habe es auf Deinen Vorschlag hin geändert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz