Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Zählen von Buchstaben (https://www.delphipraxis.net/102479-problem-mit-zaehlen-von-buchstaben.html)

kronos89 29. Okt 2007 19:01


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.

mkinzler 29. Okt 2007 19:04

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.

TonyR 29. Okt 2007 19:15

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:
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;
Danach kannst du "ganz in Ruhe" die Prozente ausrechnen, weil du ja die Absolut-Werte hast.
Entweder du nimmst 26 Integer-Variablen oder ein Array of Integer (was natürlich vie "sauberer" wäre)

marabu 29. Okt 2007 20:27

Re: Problem mit Zählen von Buchstaben
 
Oder du liest ein wenig: zeichen im memo zaehlen

Ein wenig Dreisatz hinzugeben und die Ausgabe in das StringGrid - das schaffst du.

Gute Nacht

Neutral General 29. Okt 2007 20:52

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

Dax 29. Okt 2007 20:57

Re: Problem mit Zählen von Buchstaben
 
Delphi-Quellcode:
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;
Wieso denn nicht? Über die Zeichen wird sowieso iteriert, es entstehen so keine Zugriffsverletzungen und ein komplettes Histogramm hat man am Ende auch noch...

kronos89 1. Nov 2007 16:53

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