Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Einzelne Buchstaben zählen und auflisten... (https://www.delphipraxis.net/106602-einzelne-buchstaben-zaehlen-und-auflisten.html)

bob_aus_der_flasche 13. Jan 2008 21:10


Einzelne Buchstaben zählen und auflisten...
 
hey leute hab hier ein echtes prob.

wir müssen für die schule ein sehr unsinniges prog machen und keiner weiss wie es geht.

es soll folgendes leisten:

1. Oben eine listbox in die per knopfdruck ein text aus einer datei geladen wird.
2. unten eine listbox, in der die anzahl von jedem einzelenen buchstaben per knopfdruck aufgelistet wird.
Beispiel:
A: 123 mal! D: 111 mal!
B: 456 mal! E: 222 mal!
C: 789 mal! F: 333 mal! usw....

also den ersten punkt bekomm ich noch alleine hin^^

beim 2. hapert es ein wenig

BITTE HELFT MIR !!!! :dance: :dance: :dance: :dance: :dance: :dance: :dance:

p.s. es sollen nur die buchstaben von A-Z aufgelistet werden, nicht irgendwelche anderen zeichen zusätzlich

DeddyH 13. Jan 2008 22:10

Re: Einzelne Buchstaben zählen und auflisten...
 
Wie würdest Du das denn händisch lösen? Angenommen, Du hast einfach nur den String "Text". Nun nimmst Du Dir einen Zettel, schaust Dir den ersten Buchstaben an und schreibst ein "t" und einen Strich dahinter. Nun kommt das "e". Hast Du noch nicht, also schreibst Du "e" und auch einen Strich dahinter. Jetzt dasselbe mit "x". Zum Schluss kommt nochmal "t", also hinter das "t" (bereits vorhanden, ganz oben) noch einen Strich. Das musst Du nur noch in Quellcode umsetzen und hast eine funktionierende Lösung (wobei man sich sicherlich noch Gedanken zur Geschwindigkeitsoptimierung machen könnte).

SirThornberry 13. Jan 2008 22:24

Re: Einzelne Buchstaben zählen und auflisten...
 
Handelt es sich wirklich um die Programmiersprache C++? Oder verwendet ihr vielleicht doch Delphi in der Schule?

rawsoul 13. Jan 2008 22:48

Re: Einzelne Buchstaben zählen und auflisten...
 
Das verwunderte mich gerade auch ein wenig.

Willkommen in der DP :)

SirThornberry 14. Jan 2008 15:49

Re: Einzelne Buchstaben zählen und auflisten...
 
also ich würde an die Sache wie folgt rangehen:
Es gibt nur 256 "herkömliche" Zeichen. Dementsprechend brauchst du maximal ein Array von 256 Elementen.
Also einfach ein Array mit 256 Int-Werten anlegen und dann jedes Zeichen durchgehen, es auf einen Ordinalwert casten und diesen als Arrayindex nutzen. Den Wert im Array an dieser Stelle dann einfach um 1 erhöhen.

negaH 14. Jan 2008 17:36

Re: Einzelne Buchstaben zählen und auflisten...
 
Delphi-Quellcode:
type
  TCharCounterTable = array[Char] of Cardinal;

function CountChars(const Text: String): TCharCounterTable;
var
  I: Integer;
begin
  FillChar(Result, SizeOf(Result), 0);
  for I := 1 to Length(Text) do
    Inc(Result[Text[I]]);
end;

procedure Test;
var
  Table: TCharCounterTable;
  C: Char;
begin
  Table := CountChars('Testtext');
  for C := #0 to #255 do
    if Table[C] > 0 then
      WriteLn(C, ' = ', Table[C]:4);
end;
TypCast per Ord() ist unnötig, der Index des Arrays kann als Char deklariert werden.

Gruß Hagen

bob_aus_der_flasche 14. Jan 2008 18:39

Re: Einzelne Buchstaben zählen und auflisten...
 
also Hagen, zu deiner lösung

wie genau werden da die sachen aus einer listbox gesucht und in eine andere ausgegeben ???

ich versteht nich genau wie dein prog funktioniert xDD

greetz

DeddyH 14. Jan 2008 18:46

Re: Einzelne Buchstaben zählen und auflisten...
 
Zitat:

Zitat von negaH
Delphi-Quellcode:
procedure Test;
var
  Table: TCharCounterTable;
  C: Char;
begin
  Table := CountChars('Testtext');
  for C := #0 to #255 do
    if Table[C] > 0 then
      WriteLn(C, ' = ', Table[C]:4);
end;

Testtext ist der zu untersuchende String, den kannst Du durch ListBox.Items.Text ersetzen. Und statt dem Writeln kannst Du die Ergebnisse jeweils als Zeile in der 2. ListBox ausgeben.

bob_aus_der_flasche 14. Jan 2008 21:27

Re: Einzelne Buchstaben zählen und auflisten...
 
also so sieht mein prog jetz aus:

Delphi-Quellcode:
procedure TForm1.Test;
var
  Table: TCharCounterTable;
  C: Char;
begin
  Table := CountChars(listbox1.items.text);
  for C := #0 to #255 do
    if Table[C] > 0 then
      listbox2.items.add(C , ' = ' {fehler} , Table[C]: {fehler} 4);
end;
aber vor dem 2. Komma kommt ein fehler. "Zu viele Parameter"
und nach dem doppelpunkt vor der 4 kommt auch einer. " ')' erwartet aber ':' gefunden "

was is da falsch

inherited 14. Jan 2008 21:42

Re: Einzelne Buchstaben zählen und auflisten...
 
WriteLn kann beliebig viele Parameter unterschiedlichen Typs übergeben kriegen, Add allerdings nur einen String.
Du musst C, dein ' = ' usw mit + in eine String zusammenpacken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr.
Seite 1 von 2  1 2      

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