Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Sortieren von Zufallszahlen im Stringgrid (https://www.delphipraxis.net/53888-sortieren-von-zufallszahlen-im-stringgrid.html)

Technikus 24. Sep 2005 17:47


Sortieren von Zufallszahlen im Stringgrid
 
Hallo,
kann mir jemand helfen, wie man die Zufallszahlen der zweiten Spalte in der dritten Spalte eines Stinggrids wieder sortiert ausgibt?
Da ich Anfänger bin, bitte ich bei groben Schnitzern um Nachsicht.(Delphi Prof.2005) Ich versuche damit zu verstehen, wie das Verfahren funktioniert.

Delphi-Quellcode:
type
 Zahl= array[1.. 100] of integer;

procedure TForm1.Button2_BubblesortClick(Sender: TObject);
var
 j,i,n, Merke: integer;
begin
  n:=5;
 with StringGrid1 do
  for i:= n-1 downto 1 do
   for j:= 1 to i do
    if Zahl[j]> Zahl[j+1] then
      begin
       Merke:= Zahl[j];
       Zahl[j]:= Zahl[j+1];
       Zahl[j+1]:= Merke;
      end;
    StringGrid1.Cells[2,i]:=IntToStr(Merke);
end;
Herzlichen Dank im voraus
Technikus

alzaimar 24. Sep 2005 19:46

Re: Sortieren von Zufallszahlen im Stringgrid
 
Da fehlt ein Begin...End. Soll ich sagen, wo? :wink:

Technikus 24. Sep 2005 20:24

Re: Sortieren von Zufallszahlen im Stringgrid
 
Hallo alzaimar,

Ich habs mal probiert und in folgendes geändert:
Delphi-Quellcode:
procedure TForm1.Button2_BubblesortClick(Sender: TObject);
var
 j,ende,i,n,Merke: integer;
begin
  j:= StrToInt (StringGrid1.Cells[2,j]);
  n:=5;
 with StringGrid1 do
 begin
  for i:= ende-1 downto 1 do
   for j:= 1 to i do
    if Stringgrid1.Cells[2,j]> StringGrid1.Cells[2,j+1] then
      begin
       Merke:= StrToInt(StringGrid1.Cells[2,j]);
       Stringgrid1.Cells[2,j]:= StringGrid1.Cells[2,j+1];
       StringGrid1.Cells[2,j+1]:= IntToStr(Merke);
      end;
    StringGrid1.Cells[2,i]:= (StringGrid1.Cells[2,j+1]);
  end
end;
ich hoffe, das begin und end habe ich richtig gesetzt
Der wurm ist aber noch drin.
Gruß Technikus

marabu 24. Sep 2005 20:26

Re: Sortieren von Zufallszahlen im Stringgrid
 
die j-Schleife, Technikus, die j-Schleife...

marabu

Technikus 24. Sep 2005 20:51

Re: Sortieren von Zufallszahlen im Stringgrid
 
Hallo marabu,

ich habe den Text folgender Maßen geändert:
Delphi-Quellcode:
procedure TForm1.Button2_BubblesortClick(Sender: TObject);
var
 j,ende,i,n,Merke: integer;
begin
   ende:=5;
 with StringGrid1 do
 begin
  for i:= ende-1 downto 1 do
   for j:= 1 to i do
    if Stringgrid1.Cells[2,j+1]> StringGrid1.Cells[2,j+2] then
      begin
       Merke:= StrToInt(StringGrid1.Cells[2,j]);
       Stringgrid1.Cells[2,j+1]:= StringGrid1.Cells[2,j+2];
       StringGrid1.Cells[2,j+2]:= IntToStr(Merke);
      end;
    StringGrid1.Cells[2,i+1]:= (StringGrid1.Cells[2,j+2]);
  end
end;
Bei der Sache mit der j-Schleife --gib mir bitte noch ein Stichwort,ja?
Danke Technikus

marabu 24. Sep 2005 21:06

Re: Sortieren von Zufallszahlen im Stringgrid
 
Ach Technikus, wenn du nur die Einrückung etwas sorgfältiger machen würdest, dann würdest du sofort sehen:


Delphi-Quellcode:
procedure TForm1.Button2_BubblesortClick(Sender: TObject);
var
 j, ende, i, n, Merke: integer;
begin
  ende := 5;
  with StringGrid1 do
  begin
    for i := ende-1 downto 1 do
      for j := 1 to i do
      begin
        if Stringgrid1.Cells[2, j+1] > StringGrid1.Cells[2, j+2] then
        begin
          Merke := StrToInt(StringGrid1.Cells[2, j]);
          Stringgrid1.Cells[2, j+1] := StringGrid1.Cells[2, j+2];
          StringGrid1.Cells[2, j+2] := IntToStr(Merke);
        end;
        StringGrid1.Cells[2, i+1] := (StringGrid1.Cells[2, j+2]); // hier werden i und j verwendet
      end
  end
end;
Ich habe deinen Code nicht geprüft, aber von der Optik und wegen der Verwendung von j in der markierten Zeile, gehört der Block wohl in die j-Schleife

Grüße vom marabu

Technikus 24. Sep 2005 21:41

Re: Sortieren von Zufallszahlen im Stringgrid
 
Hallo marabu,
jetzt habe ich gesehen, und geändert.
Ich bemühe mich um Besserung und weniger Schlamperei.

Delphi-Quellcode:
procedure TForm1.Button2_BubblesortClick(Sender: TObject);
var
j, ende, i, Merke: integer;
begin
  ende := 5;
  with StringGrid1 do
  begin
    for i := ende-1 downto 1 do
      for j := 1 to i do
      begin
        if Stringgrid1.Cells[2, j+1] > StringGrid1.Cells[2, j+2] then
        begin
          Merke := StrToInt(StringGrid1.Cells[2, j]);
          Stringgrid1.Cells[2, j+1] := StringGrid1.Cells[2, j+2];
          StringGrid1.Cells[2, j+2] := IntToStr(Merke);
        end;
        StringGrid1.Cells[2, j+1] := (StringGrid1.Cells[2, j+2]);
      end
  end;
 
end;
Funktionieren will es aber trotzdem nicht.

Wie kann ich die sortierte Ausgabe so hinbekommen, dass die sortierten Ergebnisse in die 3. Spalte erscheinen?

Gruß Technikus

Grishnak 24. Sep 2005 23:11

Re: Sortieren von Zufallszahlen im Stringgrid
 
So müsste es funktionieren:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  help: string;
  i, j: integer;
  noXChange: boolean;
begin
  (* alle "Zahlen" aus Spalte #1 in Spalte #2 kopieren *)
  StringGrid1.Cols[2].Text:=StringGrid1.Cols[1].Text;

  (* Bubblesort *)
  repeat
    (* noch keine Vertauschung *)
    noXChange:=true;
    (* Reihen 1 bis 100 sortieren *)
    for i:=1 to 99 do
      if StrToInt(StringGrid1.Cells[2, i]) > StrToInt(StringGrid1.Cells[2, i+1])
        then
          begin
            (* Tauschen *)
            help:=StringGrid1.Cells[2, i];
            StringGrid1.Cells[2, i]:=StringGrid1.Cells[2, i+1];
            StringGrid1.Cells[2, i+1]:=help;
            (* Vertauschung hat stattgefunden *)
            noXChange:=false;
          end;
  until noXChange;
end;

Technikus 25. Sep 2005 07:56

Re: Sortieren von Zufallszahlen im Stringgrid
 
Guten Morgen,

Delphi-Quellcode:
begin
  (* alle "Zahlen" aus Spalte #1 in Spalte #2 kopieren *)
  StringGrid1.Cols[2].Text:=StringGrid1.Cols[1].Text
...
Damit kopiere ich aber auch den Spaltenkopf und das möchte ich nicht. Der Spaltenkopf soll erhalten bleiben.
Gruß Technikus

Grishnak 25. Sep 2005 08:44

Re: Sortieren von Zufallszahlen im Stringgrid
 
Delphi-Quellcode:
var
  s: string;
[...]

s:=StringGird1.Cells[2, 0];
StringGrid1.Cols[2].Text:=StringGrid1.Cols[1].Text
StringGrid1.Cells[2, 0]:=s;
:wink:

Was ich immer noch für besser halte, als die einzelnen Zellen per for-Schleife zu kopieren!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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