Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   For Schleife beginnt mit falscher Zahl? (https://www.delphipraxis.net/193972-schleife-beginnt-mit-falscher-zahl.html)

Gurkenmann 30. Sep 2017 14:25

For Schleife beginnt mit falscher Zahl?
 
Hallo, ich hab seit einiger Zeit ein kleines Problem mit meinem Programm.
Ich sollte für die Schule ein Programm erstellen, welches mit verschiedenen Sortier Algorithmen Zahlen sortieren kann.
Nun war ich sehr engagierte und habe mir meinen eigenen Sortier Algorithmus ausgedacht,
welcher auch einwandfrei auf dem Papier funktioniert.

Nun benötige ich für den Algorithmus eine Schleife in einer Schleife. (Glaube ich zumindest).
Jedenfalls lautet meine Schleife wie folgt:
Delphi-Quellcode:
 for ü := 9 downto 0 do
    for ä := 0 to 9 do
nun habe ich aber das Problem, dass warum auch immer von -10 angefangen wird loszuzählen.
wenn dann für die Zehn nochmal von 0 bis 9 hochgezählt wurde springt es aber nicht auf -9 wie man es vermuten könnte, sondern das Programm stürzt ab.

Ich hoffe die Informationen reichen um mir weiter zu helfen, ansonsten kann ich ja auch nochmal meinen Ansatz meines Algorithmus posten.

-Gurkenmann

mkinzler 30. Sep 2017 14:31

AW: For Schleife beginnt mit falscher Zahl?
 
Am wenigen Code, den du gepostet hast, kann ich keinen Fehler erkennen.

Allerdings kann ich die -10 nicht nachvollziehen, diese scheinen ja irgendwie berechnet zu werden.

Code:
 ansonsten kann ich ja auch nochmal meinen Ansatz meines Algorithmus posten.
Wäre sinnvoll.

Gurkenmann 30. Sep 2017 14:37

AW: For Schleife beginnt mit falscher Zahl?
 
Delphi-Quellcode:
procedure TForm1.Button9Click(Sender: TObject);
var ü,ö,ä,Merke,Merke2 : INteger;
begin
  ü:=0;
  for ü := 9 downto 0 do
    for ä := 0 to 9 do
      begin
        if Zahlz[ü] < Zahlz[ä] then
          begin
            Merke := Zahlz[ü];
            Zahlz[ü] := Zahlz[ä];
            Zahlz[ä]:= Merke;
          end;
        if Zahlz[ä] < Zahlz[ä+1] then
          begin
            Merke2 := Zahlz[ä];
            Zahlz[ä] := Zahlz[ä+1];
            Zahlz[ä+1] := Merke;
          end;
      end;
for ö  := 0 to 9 do
  Stringgrid7.Cells[1,ö] := inttostr(Zahlz[ö]);

So das ist mein ganzer Code... Ich hoffe es reicht, da es sehr schwer ist den Algorithmus zu erklären :/

mkinzler 30. Sep 2017 14:46

AW: For Schleife beginnt mit falscher Zahl?
 
Me.E. müsste es

Delphi-Quellcode:
            Zahlz[ä+1] := Merke2;
Ohne den Code im Detail nachvollzogen zu haben

Gurkenmann 30. Sep 2017 14:54

AW: For Schleife beginnt mit falscher Zahl?
 
Stimmt, das habe ich übersehen, aber dadran lag es nicht. Es muss an der Schleife liegen oder am ersten if Befehl.
Ich habe ja sogar ü davor 0 gesetzt, aber es geht einfach nicht :/

mkinzler 30. Sep 2017 15:02

AW: For Schleife beginnt mit falscher Zahl?
 
Das ist nicht notwendig.
Welche Variable hat -10?

ü beginnt bei 9.

Mach mal den Blatttest und vergleiche anschliessend im Debugger.

Edit: Ich vermute es liegt in der 2. Abfrage: a+1 : 9 + 1 = 10 -> Höchster Index 9

Gurkenmann 30. Sep 2017 15:22

AW: For Schleife beginnt mit falscher Zahl?
 
Oh, wow! Es hat echt geklappt!
Mein Algorithmus funktioniert :-D
Vielen vielen Dank!
Du kannst dir gar nicht vorstellen wie glücklich ich grade bin xD
Es lag an dem zweiten if! An dem +1 und der 9.
Ich habe jetzt die zweite Schelfe von 0-8 laufen lassen :)

Ich werde dich in meiner Danksagung erwähnen, wenn ich das vor meiner Klasse präsentiere ;)
Vielen Dank!

Ich wünsche dir noch ein schönes Wochenende!

mkinzler 30. Sep 2017 16:05

AW: For Schleife beginnt mit falscher Zahl?
 
Gerne Geschehen.

Zitat:

Ich wünsche dir noch ein schönes Wochenende!
Dir auch!

Luckie 30. Sep 2017 17:36

AW: For Schleife beginnt mit falscher Zahl?
 
Hat es einen tieferen Grund warum du Umlaute als Zählvariablen nimmst?:shock:

Benedikt Magnus 1. Okt 2017 08:08

AW: For Schleife beginnt mit falscher Zahl?
 
Zitat:

Zitat von Luckie (Beitrag 1382359)
Hat es einen tieferen Grund warum du Umlaute als Zählvariablen nimmst?:shock:

Buchstaben mit nur einem Punkt sind doch langweilig. :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.
Seite 1 von 2  1 2      

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