AGB  ·  Datenschutz  ·  Impressum  







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

Zahl in Array

Offene Frage von "bonanza"
Ein Thema von bonanza · begonnen am 3. Apr 2006 · letzter Beitrag vom 3. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Zahl in Array

  Alt 3. Apr 2006, 20:34
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
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Zahl in Array

  Alt 3. Apr 2006, 20:39
Wandel doch die Zahl einfach in einen String um.
Delphi-Quellcode:
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;
Ich gehe jetzt einfach mal davon aus dass du selber sortieren kannst ^^


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#3

Re: Zahl in Array

  Alt 3. Apr 2006, 20:40
da kommt bei mir ein fehler:

[Error] Unit1.pas(33): Incompatible types: 'String' and 'PAnsiChar'


Ich hab dann einfach :

  textzahl := edit1.text; genommen, denn ich gebe die zahl ja ein...oder war das falsch ?
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Zahl in Array

  Alt 3. Apr 2006, 20:45
Nee, war nicht falsch, mein einer Befehl war falsch!

Wegen sortieren kannst du mal hier gucken.

und hier noch mal die Korrigierung meinen Codes
Delphi-Quellcode:
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;
Ist zwar immer noch ungetestet, aber jetzt müsste es klappen.


Flare

//Edit: Ich haue gerade eindeutig zu viel PHP und Delphi durcheinander, tut mir leid
Willy Scheibel
  Mit Zitat antworten Zitat
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#5

Re: Zahl in Array

  Alt 3. Apr 2006, 20:46
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
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#6

Re: Zahl in Array

  Alt 3. Apr 2006, 20:50
Der Code ist jetzt getestet und in meinem 2. Beitrag korrigiert reingestellt.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#7

Re: Zahl in Array

  Alt 3. Apr 2006, 20:54
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
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Zahl in Array

  Alt 3. Apr 2006, 20:59
Delphi-Quellcode:

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;
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.

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
  Mit Zitat antworten Zitat
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#9

Re: Zahl in Array

  Alt 3. Apr 2006, 21:06
das ist super !
aber wie krieg ich die zahlen denn in diesem stil nach größe sortiert also von groß nach klein ?
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#10

Re: Zahl in Array

  Alt 3. Apr 2006, 21:07
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
Willy Scheibel
  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 22:19 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