![]() |
Zahl in Array
Hi,
ich muss eine Zahl in ein Array kriegen...z.b: 2015 wie kriege ich das in ein Array, so das dann da steht: zahl[1] = 2 zahl[2] = 0 zahl[3] = 1 zahl[4] = 5 und dann muss ich diese Zahlen sortieren, also von klein nach groß also dann: 0125 (er soll dann ausgeben: 125) und von groß nach klein: 5210 oder gibt es noch eine andere möglichkeit die Ziffern einer Zahl zu sortieren ? danke für eure Hilfe schonmal im voraus ! mfg bonanza |
Re: Zahl in Array
Wandel doch die Zahl einfach in einen String um.
Delphi-Quellcode:
Ich gehe jetzt einfach mal davon aus dass du selber sortieren kannst ^^
var textzahl: string;
zahl,i: integer; zahlenarray: array of integer; begin textzahl := inttostr(zahl); for i:=1 to strlen(textzahl) do zahlenarray[i-1] := textzahl[i]; end; Flare |
Re: Zahl in Array
da kommt bei mir ein fehler:
[Error] Unit1.pas(33): Incompatible types: 'String' and 'PAnsiChar' Ich hab dann einfach :
Delphi-Quellcode:
genommen, denn ich gebe die zahl ja ein...oder war das falsch ?
textzahl := edit1.text;
|
Re: Zahl in Array
Nee, war nicht falsch, mein einer Befehl war falsch! :oops:
Wegen sortieren kannst du mal ![]() und hier noch mal die Korrigierung meinen Codes
Delphi-Quellcode:
Ist zwar immer noch ungetestet, aber jetzt müsste es klappen.
var textzahl: string;
zahl,i: integer; zahlenarray: array of integer; begin textzahl := inttostr(zahl); for i:=1 to length(textzahl) do zahlenarray[i-1] := strtoint(Copy(textzahl, i, 1)); end; Flare //Edit: Ich haue gerade eindeutig zu viel PHP und Delphi durcheinander, tut mir leid :oops: |
Re: Zahl in Array
es kommt noch immer der selbe fehler und er bezieht sich auf "strlen(textzahl)"...
also eher auf die komplette zeile denn "Copy((textzahl), i, 1)" gibt er den fehler aus: [Error] Unit1.pas(33): Incompatible types: 'Integer' and 'String' und wenn ich dan ein strtoint vor setze kommt folgendes: [Error] Unit1.pas(33): Incompatible types |
Re: Zahl in Array
Der Code ist jetzt getestet und in meinem 2. Beitrag korrigiert reingestellt.
Flare |
Re: Zahl in Array
ok danke...
aber wenn ich jetzt zum beispiel erstmal das array angucken will... dazu wollte ich folgendes verwenden: for i:= 1 to 4 do edit2.text := edit2.text + inttostr(zahlenarray[i])+ ','; (ich gebe maximal 4 stellige zahlen ein) dann kommt ein Access violiation fehler |
Re: Zahl in Array
Delphi-Quellcode:
Die einfachste und schnellste Sortierung ist ein indiziertes Array. Im Obigen Beispiel zerlegen wir die Zahl in ihre Ziffern 1,2,3,4,5,6,2,3,4,5 und benutzen diese als Index in Count[]. Darin zählen wir einfach das Auftreten jeder Ziffer. Wir haben also im Count[] array schon von Hause aus nach Ziffern 0 bis 9 sortiert und deren Anzahl ihres Auftretens.var Zahl,I: Integer; Count: array[0..9] of Integer; Result: String; begin FillChar(Count, SizeOf(Count), 0); Zahl := 1234562345; while Zahl <> 0 do begin Inc(Count[Zahl mod 10]); Zahl := Zahl div 10; end; for I := Low(Count) to High(Count) do Result := Result + StringOfChar(Char(I + Ord('0')), Count[I]); end; In der Ausgabe als sortierter String gehen wir nun einfach dieses Count[] Array von unten nach oben -> von 0 bis 9, durch und bauen den String zusammen. Gruß Hagen |
Re: Zahl in Array
das ist super !
aber wie krieg ich die zahlen denn in diesem stil nach größe sortiert also von groß nach klein ? |
Re: Zahl in Array
Das Array wird immer von 0 an gezählt, also musst du deine Anzeige von 0 bis 3 eingrenzen, oder du änderst meinen Programmiertext oben ein bisschen, indem du bei der Zuweisung des Zeichens zahlenarray[i] := strtoint(Copy(textzahl, i, 1)); eingibst
Flare |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 Uhr. |
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