Archiv verlassen und diese Seite im Standarddesign anzeigen : String zeichen zählen
Hi,
ich brauch ein programm, welches von einem eingegeben string, die zeichen zählt und dann auflistet, wie oft ein zeichen zb a=2
vorkommt.
jedoch hab ich momentan noch keine ahnung wie ich das umsetzen kann. wäre nett wenn mir einer helfen könnte =)
program Count;
uses crt;
type
TAbc = 'A'..'Z';
TArray = array[TAbc] of Byte;
var
Str1, Str2 : String;
j : TAbc;
ErgebnisArray : TArray;
procedure CountAbc(Str : String; var ErgebnisArray : TArray);
var
i : Byte;
begin
for i := 1 to length(Str) do
inc(ErgebnisArray[Upcase(Str[i])]);
end;
begin
clrscr;
for j := 'A' to 'Z' do
ErgebnisArray[j] := 0;
Str1 := 'Baum';
Str2 := 'Rabe';
CountAbc(Str1, ErgebnisArray);
CountAbc(Str2, ErgebnisArray);
for j := 'A' to 'Z' do
if ErgebnisArray[j] <> 0 then
write(j, ' : ', ErgebnisArray[j]);
readln;
end.
Danke, ich werds mal so ähnlich versuchen.
ich hatte erst vor, das wort auseinander flücken zu lassen, und die gleichen buchstaben in eine variable zu packen, diese dann mit length zu zählen, aber irgendwie klappte das nicht.
ich denk nochma drüber nach trotzdem danke. :)
Diogenes
20.12.2003, 15:37
Für alle Zeichen in einem Stringist folgendes empfehlenswert:
type TCharCnt = array[ #000 .. #255] of Byte; {Ein Zeichen Kann ja nicht öfter als 255 mal vorkommen.}
...
procedure CountChar( const S: string; var CharCnt: TCharCnt);
var
C: Char,
I, L: Byte;
begin
FillChar( CharCnt, SizeOf( CharCnt ), #000);
L := Length( S);
if L <> 0
then for I := 1 to L do
for C := #000 to #255 do
Inc( CharCnt[ S[ I]])
end;
...
procedure WriteCharCnt( const CharCnt: TCharCnt);
{Die Ausgabe der Zeichen selbst und nicht nur ihrer Ordnungsnummer wurde wegen der Störungen des Formats unterlassen: Ein #009 zum Beispiel ist ein TAB und wird dementsprechend reagieren.}
var
C: Char;
begin
for C :=#000 to #255 do
WriteLn( 'Char #', Ord( C):3': 'CharCnt[ C]:3, ' mal'
end;
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.