Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kryptoanalyse (https://www.delphipraxis.net/59001-kryptoanalyse.html)

Kuhlifrumsdenteich 15. Dez 2005 17:19


Kryptoanalyse
 
Moin Moin,

haette da gern mal folgendes Problem.
Habe einen Text in einem Memofeld. Dieser Text wird mit folgenden Quellcode
bearbeitet und dadurch die Haeufigkeit der Buchstaben rausgefunden, welche zum
Abschluss in eine Listbox flattern.

Doch leider ist die Ausgabe in der Listbox etwas duemmlich, da der Quellcode
nicht ordnet. Will heissen, mein Programm soll nun noch den haeufigsten Buchstaben an die erste Stelle setzen.
Sprich: einfach geordnet (von gross nach klein) in der listbox darstellen.

Bis jetzt soweit gekommen:

Delphi-Quellcode:
const
  Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var
  i, a: Integer;

begin
  for i := 1 to Length(Alphabet) do begin
    a := Anzahl(Alphabet[i]);
    ListBox1.Items.Add(Format('"%s" = %d', [Alphabet[i], a]));
  end;
end;
Ueberlegung:
Vielleicht mit einem Array (2-dimensional) zaehlen und dann danach mit
einer for-Schleife gleich ordnen.
Vielleicht kann ja jemand helfen.
Danke!

marabu 15. Dez 2005 19:21

Re: Kryptoanalyse
 
Herzlich willkommen in der Delphi-PRAXiS.

Die Häufigkeit der einzelnen Buchstaben in einem Text kannst du wohl am einfachsten in einem array of integer abzählen. Das array kannst du ruhig fest dimensionieren, da ja fest steht wieviele verschiedene Zeichen möglich sind. Wenn du es geschickt anstellst, dann ist der Zeichencode der Index in dein array.

Die Sortierung kann dir die Listbox abnehmen (Sorted = TRUE), wenn du in einer Zeile zuerst die Häufigkeit und dann den Buchstaben ausgibst. Die Häufigkeit musst du nur rechtsbündig formatieren, damit der Sort ein vernünftiges Ergebnis produziert. Schau dir dazu die Format-Funktion und die Format-Strings in der Online Hilfe von Delphi an.

Probiere mal. Du schaffst das.

Grüße vom marabu

Kuhlifrumsdenteich 15. Dez 2005 21:44

Re: Kryptoanalyse
 
Herzlichen Dank.

Die Ausgabe sieht (Listbox) sieht so aus:
A=27
B=6
C=78

es soll aber:
C=78
A=27
B=6

die Sortierung schafft doch die Listbox nicht von allein, oder ?
Ich hab echt keine Ahnung wie das funktionieren soll.

marabu 16. Dez 2005 06:53

Re: Kryptoanalyse
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen.

Um eine absteigende Sortierung zu erhalten kannst du den in der Komponente TStringList eingebauten QuickSort verwenden. Wenn du es selbst herausfinden möchtest, dann ist TStringList.CustomSort der richtige Einstieg in die Online-Hilfe. Für den Fall, dass du nicht zurecht kommst oder einfach nur mal sehen möchtest wie ein anderer es implementieren würde, habe ich dir eine DemoForm angehängt.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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