AGB  ·  Datenschutz  ·  Impressum  







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

Werte tauschen

Ein Thema von P4CM4N · begonnen am 21. Sep 2007 · letzter Beitrag vom 21. Sep 2007
Antwort Antwort
Seite 2 von 3     12 3      
P4CM4N

Registriert seit: 14. Jun 2007
49 Beiträge
 
#11

Re: Werte tauschen

  Alt 21. Sep 2007, 17:33
Ich komm einfach nicht drauf. Was fehlt in meiner Prozedur, damit es funzt?
  Mit Zitat antworten Zitat
pstruh
(Gast)

n/a Beiträge
 
#12

Re: Werte tauschen

  Alt 21. Sep 2007, 17:42
Joo, so isses mit dem repeat-until!

Zudem sei angemerkt, dass dieser Sortieralgorithmus recht langsam ist (was natürlich nur bei größeren Datenmengen ins Gewicht fällt). Ich möchte an dieser Stelle eine allgemeine SwapProcedur beisteuern:

Delphi-Quellcode:
procedure SwapVars(var a,b;nByte:Integer);
var Sou : Array[1..maxInt]of Byte absolute a;
    Des : Array[1..maxInt]of Byte absolute b;
    i : Integer;
    t : Byte;
begin
  for i:=1 to nByte do begin
   t :=Sou[i];
   Sou[i]:=Des[i];
   Des[i]:=t;
   end;
end;
Hiermit können Variablen beliebigen Typs vertauscht werden (vielleicht findet sich an dieser Stelle ein hilfreicher Geist, der diese Prozedur etwas in der Geschwindigkeit verbessern kann)

Gruß
  Mit Zitat antworten Zitat
pstruh
(Gast)

n/a Beiträge
 
#13

Re: Werte tauschen

  Alt 21. Sep 2007, 17:43
Welche Sortierprozedur verwendest du denn jetzt?
  Mit Zitat antworten Zitat
P4CM4N

Registriert seit: 14. Jun 2007
49 Beiträge
 
#14

Re: Werte tauschen

  Alt 21. Sep 2007, 17:45
Nach wie vor die vom Anfang. Die Geschwindigkeit ist bei mir nicht so wichtig. Ich habe eh nur 6 Werte.
  Mit Zitat antworten Zitat
pstruh
(Gast)

n/a Beiträge
 
#15

Re: Werte tauschen

  Alt 21. Sep 2007, 17:51
Tja, das ist klar, dass die nicht immer funktioniert! Die repeat-until Schleife darf nicht durch einen Zähler gesteuert werden. Das KANN mal passen, ist aber vermutlich MEIST falsch. Cyberbob hat dir ein Beispiel gegeben: Die Schleife darf erst beendet werden, wenn nicht mehr getauscht wurde!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#16

Re: Werte tauschen

  Alt 21. Sep 2007, 18:01
Zitat von s-off:
Hallo,

tauscht man Werte nicht mit XOR?
Bei ganzzahligen Variablen mach ich das auch so:
Delphi-Quellcode:
procedure SwapValues(var a,b: integer);
begin
  a := a xor b;
  b := b xor a;
  a := a xor b;
end;
Meintest Du das?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
P4CM4N

Registriert seit: 14. Jun 2007
49 Beiträge
 
#17

Re: Werte tauschen

  Alt 21. Sep 2007, 18:07
Ich habs jetzt wirklich GENAU so übernommen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var zahl1:tzahl;
var c,super1,speicher,d:integer;
var changed:boolean;

begin
Lotto(zahl1,super1); //Ausgabe

Repeat
  Changed := False;
  For d := 0 To Length(zahl1) - 6 do
  begin
    if zahl1[d] > zahl1[d+1] then
    begin
      Speicher := zahl1[d];
      zahl1[d] := zahl1[d+1];
      zahl1[d+1] := Speicher;
      Changed := True;
    end;
  end;
Until Changed = False;
      
for c:=1 to 7 do
Stringgrid1.Cells[c,0]:=IntToStr(zahl1[c]);

label1.Caption:=IntToStr(super1);
end;
Es klappt trotzdem nicht immer. Warum??
Erst hab ich die Zahlen geordent, dann sogar noch in einer extra Schleife die Sache wieder ausgegeben. Trotzdem sind die Zahlen, zumindest nicht immer, geordnet
  Mit Zitat antworten Zitat
pstruh
(Gast)

n/a Beiträge
 
#18

Re: Werte tauschen

  Alt 21. Sep 2007, 18:23
Warum wird denn von length(Zahl1) der Wert 6 subtrahiert? Es soll doch nur -2 sein ...
  Mit Zitat antworten Zitat
P4CM4N

Registriert seit: 14. Jun 2007
49 Beiträge
 
#19

Re: Werte tauschen

  Alt 21. Sep 2007, 21:14

scheiß Tippfehler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#20

Re: Werte tauschen

  Alt 21. Sep 2007, 21:16
Und, geht' s jetzt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 14:49 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