Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Notendurchschnitt berechnen und Initialisierung eines Array of integer (https://www.delphipraxis.net/205956-notendurchschnitt-berechnen-und-initialisierung-eines-array-integer.html)

dummzeuch 4. Nov 2020 11:10

AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
 
Zitat:

Zitat von EdAdvokat (Beitrag 1476627)
Ich habe die Schleife dahin verändert:
Delphi-Quellcode:
for i := 0 to length(ArrayNoten) do
also -1 weggelassen.

Das ist immernoch falsch (und ich hatte es im Original übersehen):

Korrekt ist
Delphi-Quellcode:
for i := 1 to 6 do

Denn der Index des Arrays ist ja als 1 bis 6 deklariert und nicht 0 bis 5 oder 0 bis 6:
Delphi-Quellcode:
var
  ArrayNoten: array[1..6] of Int32;
oder, wie Rollo62 schon schrieb:
Delphi-Quellcode:
for i := Low(ArrayNoten) to High(ArrayNoten) do

Dann setzt der Compiler die korrekten Werte automatisch ein.

Das Length(Array)-1 braucht man nur dann, wenn man das Array dynamisch alloziert, denn dann beginnt der Index immer bei 0, das letzte Element ist also bei Length(Array)-1:
Delphi-Quellcode:
var
  ArrayNoten: array of Int32;
begin
  SetLength(ArrayNoten, 6);
  for i := 0 to Length(ArrayNoten)-1 do
Auch in diesem Fall funktioniert Low und High.

Tipp: Es empfiehlt sich bei den Compiler-Optionen im Debug-Modus Overflow Checking und Range Checking zu aktivieren. Dann hätte es nämlich einen Laufzeitfehler gegeben, weil Du auf einen ungültigen Array-Index zugreifst.

Rollo62 4. Nov 2020 11:26

AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer
 
Zitat:

Zitat von dummzeuch (Beitrag 1476657)
Zitat:

Zitat von EdAdvokat (Beitrag 1476627)
Ich habe die Schleife dahin verändert:
Delphi-Quellcode:
for i := 0 to length(ArrayNoten) do
also -1 weggelassen.

Das ist immernoch falsch (und ich hatte es im Original übersehen):

Ja stimmt, ich bin von 0...6 ausgegangen, war ja 1..6 im ersten Teil:
Delphi-Quellcode:
ArrayNoten: array[1..6] of Int32;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz