AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Sortieren von Zufallszahlen im Stringgrid
Thema durchsuchen
Ansicht
Themen-Optionen

Sortieren von Zufallszahlen im Stringgrid

Ein Thema von Technikus · begonnen am 24. Sep 2005 · letzter Beitrag vom 26. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#1

Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 17:47
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 19:46
Da fehlt ein Begin...End. Soll ich sagen, wo?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#3

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 20:24
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 20:26
die j-Schleife, Technikus, die j-Schleife...

marabu
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#5

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 20:51
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 21:06
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
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#7

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 21:41
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
  Mit Zitat antworten Zitat
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#8

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 24. Sep 2005, 23:11
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;
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#9

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 25. Sep 2005, 07:56
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
  Mit Zitat antworten Zitat
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#10

Re: Sortieren von Zufallszahlen im Stringgrid

  Alt 25. Sep 2005, 08:44
Delphi-Quellcode:
var
  s: string;
[...]

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


Was ich immer noch für besser halte, als die einzelnen Zellen per for-Schleife zu kopieren!
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:04 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