![]() |
Delphi-Version: 7
Programm, das Zeichen in einem Wort zählt - BinarySearchTree
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-Experten,
ich sitze momentan an einem Projekt, das allgemein Zeichen in einem Wort zählen soll. Man gibt ein beliebiges Wort in ein Memo ein und erhält in dem zweiten Memo nach klicken auf den Button "btZeichenanzahl" einen Buchstaben plus die Anzahl (z.B. A 3, B 4, C 2). Für das Programm werden die Units mZeichenanzahl (Hauptformular), mZeichenzaehler, mZeichenzahl, mBinarySearchTree, mItem, mBinaryTree und mListenstruktur verwendet. Im Anhang befindet sich mein Ansatz, jedoch komme ich momentan nicht mehr weiter... Ich wäre euch sehr dankbar, wenn mir jemand bei diesem Problem behilflich ist :-) Mfg, Kudle |
AW: Programm, das Zeichen in einem Wort zählt - BinarySearchTree
Hai Kudle,
ich habe hier kein Delphi und kann dein Projekt nicht öffnen. Aber mal ein "grober" ansatz. Jedes Zeichen (nicht unicode) hat einen ASCII Wert von 0 bis 255. Also erzeuge Dir doch ein Array dieser größe, gehe jedes Zeichen des Strings durch und Incrementiere immer die Position im Array die dem ASCII Wert des Zeichens entspricht. ![]() |
AW: Programm, das Zeichen in einem Wort zählt - BinarySearchTree
Den Ansatz mit dem Array find ich zwar klasse, aber ich vermute stark, dass Kudle das mit einem Binärbaum lösen soll. Da ich selbst kein Delphi zur Hand habe habe ich den Code nur mal kurz überflogen, prinzipiell hast du aber in den Units alle notwendigen Klassen zur Hand.
Prinzipielles:
Grobimplementierung:
Ich hoffe mal das passt so, ich konnte es wie gesagt selbst nicht testen und hab mir das alles on-the-fly überlegt :) |
AW: Programm, das Zeichen in einem Wort zählt - BinarySearchTree
Ich weiß nicht ob du was spezielles suchst, aber auf die Schnelle Just4Fun:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const x = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüÄÖÜß0123456789'; var s: String; i, k: Integer; begin s := Memo1.Lines.Text; Memo2.Clear; for i := 1 to Length(x) do begin k := 0; while Pos(x[i], s) > 0 do begin s[Pos(x[i], s)] := '~'; Inc(k); end; if k > 0 then //wenn auch fehlende Zeichen angezeigt werden sollen, dann die Zeile weg Memo2.Lines.Add(x[i] + ' = ' + IntToStr(k)); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 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 by Thomas Breitkreuz