Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zahl in Array (https://www.delphipraxis.net/66759-zahl-array.html)

3_of_8 3. Apr 2006 21:08

Re: Zahl in Array
 
Schau mal bei http://dsdt.info unter Tipps und Algorithmen und BubbleSort. Da findest du nen Sortieralgorithmus, den noch leicht umschreiben und dann passts.

bonanza 3. Apr 2006 21:13

Re: Zahl in Array
 
irgendwei funktionier das von Flare nicht :-\

und von Hagen schon aber da weiß ich noch nicht wie ich das da nach größe sortiere...

negaH 3. Apr 2006 21:27

Re: Zahl in Array
 
Sorry mann, aber ES IST schon sortiert. Defakto musst du garnichts sortieren in diesem Fall, und brauchst keinen Bubblesort oder ähnliches.

Schau die Sache ist doch ganz einfach:

deine Zahl 123456441 besteht aus 8 Ziffern -> 1,2,3,4,5,6,4,4,1 richtig ? Nun zählen wir einfach alle diese Ziffern, wir berechnen deren Anzahl. Das machen wir indem wir einfach die Ziffern als Index in ein Array[0..9] benutzen.

Count[0] = 0;
Count[1] = 2; weil zwei Einsen vorkommen
Count[2] = 1; weil eine Zwei vorkommt
Count[3] = 1; weil eine Drei vorkommt
Count[4] = 3; weil drei Vieren vorkommmen
Count[5] = 1; weil eine Fünf vorkommt
Count[6] = 1; weil eine Sechs vorkommt
Count[7] = 0;
Count[8] = 0;
Count[9] = 0; weil keine 7,8,9 vorkommen.

Nun gehen wir einfach das Array Count[] von unten nach oben durch, also von 0 bis 9 und bauen den String zusammen

'11' + '2' + '3' + '444' + '5' + '6' -> '112344456' weil

2* die '1'
1* die '2'
1* die '3'
3* die '4'
1* die '5'
1* die '6'

kommen im array Count[] vor.

Willst du das andersrum sortiert haben -> '65444321' dann gehst du das Array Count eben einfach von Oben nach Unten in der Schleife durch:

Delphi-Quellcode:
  for I := High(Count) downto Low(Count) do
   ...
fertig. Du musst also im Grunde garnichts sortieren, noch brauchst du viel an Speicher, das Einzigste was du ge-brauchen musst ist dein Hirn, und das Wissen das man manche Dinge auch ohne Bubblesort oder andere komplizierte Techniken lösen kann ;)

Gruß Hagen

negaH 3. Apr 2006 21:32

Re: Zahl in Array
 
Und wenn du das wieder in ein Zahl Umwandeln möchtest, statt einen String dann geht dies so

Delphi-Quellcode:
Result := 0;
for I := Low(Count) to High(Count) do
  while Count[I] > 0 do
  begin
    Result := Result * 10 + I;
    Dec(Count[I]);
  end;
Du hast dann keinen String sondern wieder einen Integer als Resulat.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz