Ganymed Geschrieben 23. Juni 2004 Geschrieben 23. Juni 2004 Hallo zusammen, ich habe folgendes Problem: Ich möchte gerne Werte, die gleich sind, zusammenfassen. Folgender Fall: Ich habe als Ergbnis einer Berechnung 2 5 6 2 3 5 als Ziffern Ich möchte nun, dass die 2 und die 5 als gleich erkann werden und zusammengefasst werden können: 2 5 6 3 Frage: Wie stelle ich das ohne zig IF-Abfragen an? Wie kann ich sichergehen, dass auch alle Zahlen erwischt wurden? Wenn ich z.B. 2 5 6 2 3 5 2 habe, dass er mir auch die letzte 2 mit zusammenfasst? Gruß Ganymed Zitieren
nic_power Geschrieben 23. Juni 2004 Geschrieben 23. Juni 2004 Hallo, Wenn ich Dich richtig verstanden habe, möchtest Du aus einer beliebigen Reihe von Ziffern alle Ziffern genau 1x aufführen die ein- oder mehrmals in dieser Reihe enthalten sind? In welcher Form liegt denn das Ergebnis vor? Entweder Du sortierst die Liste und schaust dann auf einen Ziffernwechsel oder Du gehst die Liste über die Ziffern 0-9 durch. Sobald eine dieser Ziffern gefunden wird, trägst Du sie in Deine Ergebnisliste ein (danach kannst Du mit der nächsten Ziffer fortfahren, da nur wichtig ist, ob sie überhaupt in Deiner Eingabe vorkommt). Nic Zitieren
Ganymed Geschrieben 23. Juni 2004 Autor Geschrieben 23. Juni 2004 Hallo, Wenn ich Dich richtig verstanden habe, möchtest Du aus einer beliebigen Reihe von Ziffern alle Ziffern genau 1x aufführen die ein- oder mehrmals in dieser Reihe enthalten sind? In welcher Form liegt denn das Ergebnis vor? Entweder Du sortierst die Liste und schaust dann auf einen Ziffernwechsel oder Du gehst die Liste über die Ziffern 0-9 durch. Sobald eine dieser Ziffern gefunden wird, trägst Du sie in Deine Ergebnisliste ein (danach kannst Du mit der nächsten Ziffer fortfahren, da nur wichtig ist, ob sie überhaupt in Deiner Eingabe vorkommt). Nic Also im Moment sind sie in einem Array: Eine Ganzzahl und eine ID: 5 123456 2 456789 : : Da die Zahlen aus einer Binärzahl berechnet wurden sind auch Ziffern größer als 9 denkbar... Zitieren
nic_power Geschrieben 24. Juni 2004 Geschrieben 24. Juni 2004 Hallo, Da die Zahlen aus einer Binärzahl berechnet wurden sind auch Ziffern größer als 9 denkbar... Ziffern größer als 9 gibt es nicht (das sind dann Zahlen). Möchtest Du über die Ziffern gehen (also Reihen in der Form "1 5 5 3 2 3 6 7 2 3") oder können auch Zahlenfolgen (also Reihen der Form "1 3 545 32 2 4 545 2") auftreten? Nic Zitieren
Ganymed Geschrieben 25. Juni 2004 Autor Geschrieben 25. Juni 2004 Hallo, Ziffern größer als 9 gibt es nicht (das sind dann Zahlen). Möchtest Du über die Ziffern gehen (also Reihen in der Form "1 5 5 3 2 3 6 7 2 3") oder können auch Zahlenfolgen (also Reihen der Form "1 3 545 32 2 4 545 2") auftreten? Nic Hallo, Letzteres ist korrekt. Aber die Größe spielt keine Rolle, wichtig ist es, gleiche Zahlen () zu finden Und irgendwie weiß ich nicht, wie am dümmsten die Sachen in Variablen verarbeiten soll. Ich arbeite mit PL/SQL. Ganymed Zitieren
inzi Geschrieben 14. August 2004 Geschrieben 14. August 2004 wie wärs denn wenn du denn array oder wie mein ehmaliger info. prof immer sagt vektor durch gehst! dir einen zusätzlichen vektor der schaffst der genau 10 stellen hat. dann schreibst du für jeden gefunde zahl also von 0 bis 9 jede in einen zusatz array. du brauchst gar nicht prüfen ob mehrmals vorhanden. jede zahl die vorgekommen ist kannst du in dem extra array eintragen ... weil einmal = 100mal ist. ist die folge von bedeutung? also ob 512 oder kann auch 125 sein? inzi Zitieren
loeti Geschrieben 17. August 2004 Geschrieben 17. August 2004 Kommen die Werte aus der DB? Dann könntest du mit einem "distinct" die Select Klausel einschränken!? Zitieren
need-some-blood Geschrieben 19. August 2004 Geschrieben 19. August 2004 for i=0 to arraygröße-1 do begin for j=i to arraygröße-1 do begin if array[i] ungleich array[j] then begin hilfsarray[k]=array[i]; erhöhe k; end; end; end; Denk das funzt. Habs net durchgespielt und nur mal eben in der Mittagspause hingetickert. Aber funzt ähnlich wie palindromerkennung MVg need-some-blood Zitieren
kLeiner_HobBes Geschrieben 19. August 2004 Geschrieben 19. August 2004 Du kannst dir auch den Algorithmus, den das STL (Standard Template Library) von C++ für die Methode unique() anschauen. Der bewirkt IMO auf einen Container (Array) das, was du oben beschrieben hast. Zitieren
maxim_42 Geschrieben 23. August 2004 Geschrieben 23. August 2004 Keine Ahnung ob folgendes mit PL/SQL umzusetzen ist. Aber es geht ja um Algorythmen: Als Container der unterschiedlichen Werte schlage ich ein Dictionary vor. Einträge im Dictionary haben einen Key (zwingend: jeder Eintrag einen verschiedenen) und einen Wert (bool beispielsweise). Jeder Eintrag im Dictionary hat den Key mit der Stringrepresentanz des Wertes und optional einen Wert true. Vorgehensweise: Für jeden Wert: wenn Container[Wert] nicht vorhanden dann: Container[Wert] in den Container aufnehmen. Optional Container[Wert] = true Ende Für jeden Wert Jetzt muss nur noch für jedes Element im Container der Key ausgelesen werden. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.