![]() |
Problem mit Zählen von Buchstaben
Ich brauche ein Programm, welches man wohl kaum braucht, aber unserer Infolehrer will das wissen und der ganze Kurs ist ratlos.
Also, wir brauchen ein Programm, welches alle Buchstaben in einem Memofeld zählt, sowie wie viel verschiedenen Buchstaben vorhanden sind und den prozentualen Anteil jedes Buchstaben. Dies 3 Werte sollen in einer Stringgridtabelle ausgegeben werden. Für ein Programmablaufplan wäre ich dankbar, da ich Delphi selbst nicht so gut kenne. |
Re: Problem mit Zählen von Buchstaben
Über die Eigenschaft .Text kannst du auf den gesamten Inhalts eines Memos in einem String zugreifen.
Mit Hilfe von Pos()/PosEx() kannst du dann für jeden Buchstaben ermitteln wie oft er vorkommt. |
Re: Problem mit Zählen von Buchstaben
Wenn du dich noch nicht so auskennst mit Delphi (was ich nicht glauben kann, wenn ihr solche Aufgaben bekommt), dann würde ich empfehlen eine FOR-Schleife zu durchlaufen
Delphi-Quellcode:
Danach kannst du "ganz in Ruhe" die Prozente ausrechnen, weil du ja die Absolut-Werte hast.
for i:=1 to Length(memo1.text) do
begin // memo1.text[i] -> damit bekommst du den Buchstaben raus an der jeweiligen Position, // jetzt mit einer CASE-Anweisung gucken, welcher Buchstabe es ist // und in verschieden Variablen zählen (immer um eins erhöhen) end; Entweder du nimmst 26 Integer-Variablen oder ein Array of Integer (was natürlich vie "sauberer" wäre) |
Re: Problem mit Zählen von Buchstaben
Oder du liest ein wenig:
![]() Ein wenig Dreisatz hinzugeben und die Ausgabe in das StringGrid - das schaffst du. Gute Nacht |
Re: Problem mit Zählen von Buchstaben
Hi,
Was ich auch empfehlen kann ist eventuell ein Array[Char] of Integer. Oder vielleicht noch beser sowas: (Ideal wenns nicht auf Groß- und Kleinschreibung ankommt...
Delphi-Quellcode:
Wobei das auch keine Ideale Lösung ist.. auf Buchstaben[' '] zuzugreifen z.B. ist sicher auch nicht das feinst..Da müsste man halt noch ein bisschen dran feilen.
type TAlphabet = 'a'..'z';
procedure TForm1.Button1Click(Sender: TObject); var Buchstaben: Array[TAlphabet] of Integer; tmp: String; i: Integer; begin FillChar(Buchstaben,26*SizeOf(Integer),0); tmp := LowerCase(Memo1.Text); for i:= 1 to Length(tmp) do inc(Buchstaben[tmp[i]]); ShowMessage(IntToStr(Buchstaben['m'])); // Beispiel end; |
Re: Problem mit Zählen von Buchstaben
Delphi-Quellcode:
Wieso denn nicht? Über die Zeichen wird sowieso iteriert, es entstehen so keine Zugriffsverletzungen und ein komplettes Histogramm hat man am Ende auch noch...
procedure TForm1.Button1Click(Sender: TObject);
var Buchstaben: Array[char] of Integer; tmp: String; i: Integer; begin FillChar(Buchstaben,sizeof(Buchstaben),0); tmp := LowerCase(Memo1.Text); for i:= 1 to Length(tmp) do inc(Buchstaben[tmp[i]]); end; |
Re: Problem mit Zählen von Buchstaben
Danke für alle Antworten. Hatt mir sehr geholfen! :dancer2:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 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