Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Array defekt. (https://www.delphipraxis.net/179230-array-defekt.html)

Pay der Laimbo 21. Feb 2014 12:14

Array defekt.
 
Unser Array New[i] gibt ständig nur 000000 aus. Warum?
Zur kurzen Info: Sollen einen eigenen Sortierallgorithmus im Informatikunterricht programmieren.



Delphi-Quellcode:
var
Anzahl, i, Min, Max :Integer;
Zahl: Array [1..100] of Integer;
New : Array [1..100] of Integer;

Procedure Eingabe;
begin
Write('Wie viele Zahlen moechten Sie sortieren? ');
Readln(Anzahl);
Writeln('Welche Zahlen wollen Sie sortieren?');
For i:=1 to Anzahl do begin
Write('Zahl ',i,':  ');
Readln(Zahl[i]);
end;
end;

Procedure Minimum;
begin
Min := 1;
For i:=1 to Anzahl do
begin
if Zahl[Min] > Zahl[i] then
Min := i;
end;
end;

Procedure Maximum;
begin
Max := 1;
For i:=1 to Anzahl do
begin
if Zahl[Max] < Zahl[i] then
Max := i;
end;
end;

Procedure Sort;
begin
For i:=1 to Anzahl do begin
Minimum;
New[i]:=Zahl[Min];
Zahl[Min]:=Zahl[Max];
end;
end;

Procedure Ausgabe;
begin
Writeln('Die sortierten Zahlen:  ');
For i:=1 to Anzahl do begin
Write(New[i]);
end;
end;

Begin
Eingabe;
Maximum;
Minimum;
Sort;
Ausgabe;
Readln;
end.

Zacherl 21. Feb 2014 12:25

AW: Array defekt.
 
Definiere deine "i" Schleifenvariable mal lokal in den einzelnen Funktionen, dann sollte es funktionieren (Gibt Delphi dir keine Warnung, wenn du das global deklarierst?).

Pay der Laimbo 21. Feb 2014 12:28

AW: Array defekt.
 
Du bist der Gott.

Danke Danke Danke :)

Aber warum genau muss das denn Lokal definiert sein?

Perlsau 21. Feb 2014 12:28

AW: Array defekt.
 
Crosspost

Zacherl 21. Feb 2014 12:47

AW: Array defekt.
 
Zitat:

Zitat von Pay der Laimbo (Beitrag 1248965)
Aber warum genau muss das denn Lokal definiert sein?

In deinem Falle ist das Problem, dass du "Minimum" innerhalb von "Sort" aufrufst. Hierdurch wird die Schleifenvariable während des "äußeren" Schleifendurchlaufs von der "inneren" Funktion geändert. Dein I in der Sort Funktion entspricht deshalb immer (Anzahl + 1) in jedem Durchlauf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.

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