![]() |
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 |
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).
|
Re: Einzelne Buchstaben zählen und auflisten...
Handelt es sich wirklich um die Programmiersprache C++? Oder verwendet ihr vielleicht doch Delphi in der Schule?
|
Re: Einzelne Buchstaben zählen und auflisten...
Das verwunderte mich gerade auch ein wenig.
Willkommen in der DP :) |
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. |
Re: Einzelne Buchstaben zählen und auflisten...
Delphi-Quellcode:
TypCast per Ord() ist unnötig, der Index des Arrays kann als Char deklariert werden.
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; Gruß Hagen |
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 |
Re: Einzelne Buchstaben zählen und auflisten...
Zitat:
|
Re: Einzelne Buchstaben zählen und auflisten...
also so sieht mein prog jetz aus:
Delphi-Quellcode:
aber vor dem 2. Komma kommt ein fehler. "Zu viele Parameter"
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; und nach dem doppelpunkt vor der 4 kommt auch einer. " ')' erwartet aber ':' gefunden " was is da falsch |
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 09:28 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