Problem bei Selectionsort

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
zain2
Beiträge: 10
Registriert: Mo 5. Nov 2012, 10:26
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Problem bei Selectionsort

Beitrag von zain2 »

Code: Alles auswählen

procedure TForm1.Button4Click(Sender: TObject);
var
  i,j,v : Integer;
Begin
  For i:= 2 To 9 Do
  Begin
    v:= StrToInt(StringGrid2.Cells[i,0]);
    j:= i;
    While ((j > 1) and (StrToInt(StringGrid2.Cells[j-1,0]) > v)) Do
    Begin
      StringGrid2.Cells[j,0]:= StringGrid2.Cells[j-1,0];
      dec(j);
    End;
    StringGrid2.Cells[j,0]:= IntToStr(v);
  End;
End;
end.
Wenn ich auf den Button4 klicke, passiert gar nichts...
Ich wollte jetzt euch mal fragen wo genau das Problem ist.
Ich sitze jetzt schon verdammt lange dadran und weiß einfach nicht, was ich falsch gemacht hab...
Bei Bedarf lad ich das ganze Projekt hoch :)

MfG zain2
Die Welt geht am 31. Dezember 2099 unter, da endet der Windows Kalender...

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Problem bei Selectionsort

Beitrag von Antrepolit »

Was soll das Ding machen (Sortierung nach welchem Kriterium)? Und welcher Algorithmus liegt dem zugrunde (Quicksort ist es ja mit Sicherheit nicht)?
Grüße, Antrepolit

care only if your os is really burning

zain2
Beiträge: 10
Registriert: Mo 5. Nov 2012, 10:26
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Re: Problem bei Selectionsort

Beitrag von zain2 »

Bei Selectionsort nimmt das Programm die erste Zahl und vergleicht sie mit allen anderen. Immer wenn sie größer ist, steigt die Stelle um 1. Wenn er fertig ist kopiert er die Zahl in die zweite Tabelle an der Variable Stelle. Dann macht er das mit den restlichen Zahlen :) Ich hoffe ich hab das jetzt richtig wiedergegeben, sollte aber eigentlich so stimmen.

MfG zain2
Die Welt geht am 31. Dezember 2099 unter, da endet der Windows Kalender...

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Problem bei Selectionsort

Beitrag von Socke »

Ich zitiere hier mal deine Antwort und füge dezent ein paar Überlegungen ein ...

Bei Selectionsort nimmt das Programm die erste Zahl (woher?) und vergleicht sie mit allen anderen (was sind alle anderen? wo kommen sie her?). Immer wenn sie größer ist, steigt die Stelle (was ist die Stelle?) um 1. Wenn er fertig ist kopiert er die Zahl in die zweite (Ich sehe in deinem Code-Auzug nur ein StringGrid) Tabelle (gemeint ist wohl ein TStringGrid) an der Variable Stelle (Es gibt keine Variable mit dem Namen "Stelle"). Dann macht er das mit den restlichen Zahlen :) Ich hoffe ich hab das jetzt richtig wiedergegeben, sollte aber eigentlich so stimmen.

Bitte nicht böse nehmen. Manchmal muss man sich präzise ausdrücken um genau zu wissen, wovon man redet. Hier habe ich das ein wenig überspitzt -- so lernt man das am Besten ;-)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

zain2
Beiträge: 10
Registriert: Mo 5. Nov 2012, 10:26
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Re: Problem bei Selectionsort

Beitrag von zain2 »

Bei Selectionsort nimmt das Programm die erste Zahl (aus TStringGrid1) und vergleicht sie mit allen anderen (aus TStringGrid1). Immer wenn sie größer ist, steigt die Variable Stelle um 1. Wenn er fertig ist kopiert er die Zahl in TStringGrid2 an der Variable Stelle . Dann macht er das mit den restlichen Zahlen :) Ich hoffe ich hab das jetzt richtig wiedergegeben, sollte aber eigentlich so stimmen.

So jetzt sollte doch alles richig beschrieben worden sein. Ich weiß jetzt das ich mich präziser ausdrücken muss :)
Die Welt geht am 31. Dezember 2099 unter, da endet der Windows Kalender...

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Problem bei Selectionsort

Beitrag von Socke »

zain2 hat geschrieben:Bei Selectionsort nimmt das Programm die erste Zahl (aus TStringGrid1) und vergleicht sie mit allen anderen (aus TStringGrid1). Immer wenn sie größer ist, steigt die Variable Stelle um 1. Wenn er fertig ist kopiert er die Zahl in TStringGrid2 an der Variable Stelle . Dann macht er das mit den restlichen Zahlen :) Ich hoffe ich hab das jetzt richtig wiedergegeben, sollte aber eigentlich so stimmen.

So jetzt sollte doch alles richig beschrieben worden sein. Ich weiß jetzt das ich mich präziser ausdrücken muss :)
Der Quelltext oben nimmt die Zahl aus StringGrid2 und speichert sie in der Variablen v ab. Es wird überhaupt nur ein StringGrid verwendet. Ist das so richtig?

Versuche deinen Algorithmus noch einmal so zu formulieren, dass Schleifen-Variablen (das sind die Variablen, die zur Steuerung einer Schleife verwendet werden) nur für diese Schleife und nicht mehr danach verwendet werden. Hier wird beispielsweise das j sowohl in der Schleife verwendet als auch danach (dann mit einem Wert 1 niedriger als im letzten Schleifendurchlauf).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten