AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

For Schleife beginnt mit falscher Zahl?

Ein Thema von Gurkenmann · begonnen am 30. Sep 2017 · letzter Beitrag vom 1. Okt 2017
Antwort Antwort
Gurkenmann
(Gast)

n/a Beiträge
 
#1

For Schleife beginnt mit falscher Zahl?

  Alt 30. Sep 2017, 14:25
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: For Schleife beginnt mit falscher Zahl?

  Alt 30. Sep 2017, 14:31
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Gurkenmann
(Gast)

n/a Beiträge
 
#3

AW: For Schleife beginnt mit falscher Zahl?

  Alt 30. Sep 2017, 14:37
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 :/
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: For Schleife beginnt mit falscher Zahl?

  Alt 30. Sep 2017, 14:46
Me.E. müsste es

            Zahlz[ä+1] := Merke2; Ohne den Code im Detail nachvollzogen zu haben
Markus Kinzler
  Mit Zitat antworten Zitat
Gurkenmann
(Gast)

n/a Beiträge
 
#5

AW: For Schleife beginnt mit falscher Zahl?

  Alt 30. Sep 2017, 14:54
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 :/
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: For Schleife beginnt mit falscher Zahl?

  Alt 30. Sep 2017, 15:02
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
Markus Kinzler

Geändert von mkinzler (30. Sep 2017 um 15:05 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: For Schleife beginnt mit falscher Zahl?

  Alt 1. Okt 2017, 17:12
So das ist mein ganzer Code...Ich hoffe es reicht,
Ja, tut es.

da es sehr schwer ist den Algorithmus zu erklären :/
Jedenfalls ist Dein Code - auch ohne Deine oder irgendeine Erklärung - ziemlich leicht als elementarer Sortieralgorithmus mit quadratischem Laufzeitverhalten (das sind nahezu Synonyme) zu erkennen. Das bedeutet, daß bei wachsender Anzahl zu sortierender Elemente dieser Dein Algorithmus sehr langsam wird. Für den Anfang aber ein gutes Ergebnis. Außerdem dürfte er nicht stabil sein, was bedeutet, daß gleiche Elemente ihre Reiheinfolge bzw. Anordnung zueinander im Verlaufe der Sortierung ändern können.

Falls es Dich interessiert, was sich im Bereich der Sortieralgorithmen im Verlaufe der letzten Jahrzehnte "so tat", dann verweise ich auf meine Signatur. Ich hoffe, damit einen guten Überblick und Abriß zu diesem Thema geben zu können.

Du benötigst übrigens keine 2 Merke-Variablen, eine tut es auch. Und statt "ö" kannst Du auch "ä" oder "ü" für die Ausgabeschleife verwenden.

Geändert von Delphi-Laie ( 1. Okt 2017 um 17:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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