AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Zählen von Buchstaben

Ein Thema von kronos89 · begonnen am 29. Okt 2007 · letzter Beitrag vom 1. Nov 2007
Antwort Antwort
kronos89

Registriert seit: 1. Sep 2007
Ort: Premsdorf
12 Beiträge
 
#1

Problem mit Zählen von Buchstaben

  Alt 29. Okt 2007, 20:01
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit Zählen von Buchstaben

  Alt 29. Okt 2007, 20:04
Ü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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Problem mit Zählen von Buchstaben

  Alt 29. Okt 2007, 20:15
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)
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Problem mit Zählen von Buchstaben

  Alt 29. Okt 2007, 21:27
Oder du liest ein wenig: zeichen im memo zaehlen

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

Gute Nacht
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Problem mit Zählen von Buchstaben

  Alt 29. Okt 2007, 21:52
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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Problem mit Zählen von Buchstaben

  Alt 29. Okt 2007, 21:57
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...
  Mit Zitat antworten Zitat
kronos89

Registriert seit: 1. Sep 2007
Ort: Premsdorf
12 Beiträge
 
#7

Re: Problem mit Zählen von Buchstaben

  Alt 1. Nov 2007, 17:53
Danke für alle Antworten. Hatt mir sehr geholfen!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 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