Entwickler-Ecke

Sonstiges (Delphi) - Ich brauche eure Hilfe


elefantenfan88 - Di 03.11.09 19:11
Titel: Ich brauche eure Hilfe
ich muss ein bubblesort sortierverfarhen programmieren... ich habe 10 zahlen im zahlenfeld 1-1000 im ersten editfeld sollen diese unsortiert erscheinen, wenn man auf den button unsortiert klickt... diese funktion funktioniert bei mir schon.
nun muss ich den zweiten button so programmieren, das die in edit 1 gezeigten zahlen in edit 2 sortiert gezeigt werden:
ich habe es soweit programmiert, jedoch klappt es nicht... ich glaube mein fehler liegt in der letzen zeile, könnt ihr mir bitte helfen
mein Programm:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.bt_sortClick(Sender: TObject);
var i,j,Merke:Integer;
begin
 for i:=9 downto 1 do
  for j:=1 to i do
  if zahlenf[j]> zahlenf[j+i] then
     begin
     Merke:=zahlenf[j];
     Zahlenf[j]:= Zahlenf[j+i];
     zahlenf[j+i]:=Merke;
     end;
ed_ausgabe.text:= ed_ausgabe.text+' '+IntToStr(zahlenf[j]);

end;


vielen dank
elefantenfan88

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt


elundril - Di 03.11.09 19:13

vollig klar. du greifst außerhalb deiner schleife auf die schleifenvariable j zu. ;)

der code sollte dann so aussehen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.bt_sortClick(Sender: TObject);
  var i,j,Merke:Integer;
begin
  for i:=9 downto 1 do
    for j:=1 to i do begin
      if zahlenf[j]> zahlenf[j+i] then begin
        Merke:=zahlenf[j];
        Zahlenf[j]:= Zahlenf[j+i];
        zahlenf[j+i]:=Merke;
      end;
  ed_ausgabe.text:= ed_ausgabe.text+' '+IntToStr(zahlenf[j]);
  end;
end;


(auf die korrektheit deines algos hab ich mal nicht geprüft. notfalls ein begin+end umstellen)

lg elundril


elefantenfan88 - Di 03.11.09 19:52

also irgendwie funktioniert das immer noch nicht heute ist einfach der berühmte wurm drin... ich habs jetzt also folgender maßen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.bt_sortClick(Sender: TObject);
var i,j,Merke:Integer;
begin
 for i:=9 downto 1 do
    for j:=1 to i do
  begin
      if zahlenf[j]> zahlenf[j+i] then
      begin
        Merke:=zahlenf[j];
        Zahlenf[j]:= Zahlenf[j+i];
        zahlenf[j+i]:=Merke;
      end;
  ed_ausgabe.text:= ed_ausgabe.text+' '+IntToStr(zahlenf[j]);
  end;
end;


ps: dane für euer hilfe

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


elundril - Di 03.11.09 20:21

Kommt eine Fehlermeldung oder sortiert er nicht richtig?

außerdem verwende bitte für deinen Code die Delphi tags: [delphi]Dein Code[/delphi]

lg elundril


elefantenfan88 - Di 03.11.09 21:07

vielen dank ich habe meinen fehler schon selber gefunden
trotzdem vielen dak für deine bemühnungen
bis bald elefantenfan 88