Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
Delphi 2006 Professional
|
Re: Vokale Zählen
18. Jun 2006, 12:37
Zitat von SirThornberry:
es ist ja wunderschön ds ihr eine komplettlösung postet, aber anscheinend habt ihr nicht daran gedacht das er dabei nicht viel lernt ...
Hai Sir,
ich gebe Dir recht. Aber trotzdem poste ich hier mal meine Lösung.
Wichtig ist: Die Funktionalität ist von der GUI (OnClick getrennt). Leider machen diesen schweren Fehler immer noch viel zu viele.
Dann habe ich versucht das ganze so offen wie nur möglich zu halten. Es geht dabei einfach darum verschiedene "Char-Arten" zu zählen. Diese "Arten" sind einfach in den Records eines Arrays definiert. Was man damit macht ist aufgabe des Entwicklers
Delphi-Quellcode:
type
TCharCountInfo = record
Chars: set of Char;
Counter: Cardinal;
end;
function CountCharTypes(const aString: string; var CharTypes: array of TCharCountInfo): Cardinal;
var
ndx1: Integer;
ndx2: Integer;
CharCount: Cardinal;
CountString: string;
begin
CountString := aString;
CharCount := 0;
for ndx1 := 0 to Length(aString) do
begin
for ndx2 := Low(CharTypes) to High(CharTypes) do
begin
if (aString[ndx1] in CharTypes[ndx2].Chars) then
begin
Inc(CharTypes[ndx2].Counter);
Inc(CharCount);
end;
end;
end;
result := CharCount;
end;
procedure TDemoForm.btn_testClick(Sender: TObject);
var
myCharTypes: array[1..6] of TCharCountInfo;
s: string;
count: Integer;
begin
myCharTypes[1].Chars := ['a'..'z'] - ['a', 'e', 'i', 'o', 'u'];
myCharTypes[1].Counter := 0;
myCharTypes[2].Chars := ['a', 'e', 'i', 'o', 'u'];
myCharTypes[2].Counter := 0;
myCharTypes[3].Chars := ['A'..'Z'] - ['A', 'E', 'I', 'O', 'U'];
myCharTypes[3].Counter := 0;
myCharTypes[4].Chars := ['A', 'E', 'I', 'O', 'U'];
myCharTypes[4].Counter := 0;
myCharTypes[5].Chars := ['ö', 'ü', 'ä', 'ß'];
myCharTypes[5].Counter := 0;
myCharTypes[6].Chars := ['Ö', 'Ü', 'Ä'];
myCharTypes[6].Counter := 0;
s := 'qwaeiouäöüßÄÖÜQWR';
count := CountCharTypes(s, myCharTypes);
Label1.Caption := Format('Es wurden %d Zeichen gezählt', [count]);
Label2.Caption := Format('davon waren %d Zeichen in myCharTypes[1]', [myCharTypes[1].Counter]);
Label3.Caption := Format('davon waren %d Zeichen in myCharTypes[2]', [myCharTypes[2].Counter]);
Label4.Caption := Format('davon waren %d Zeichen in myCharTypes[3]', [myCharTypes[3].Counter]);
Label5.Caption := Format('davon waren %d Zeichen in myCharTypes[4]', [myCharTypes[4].Counter]);
Label6.Caption := Format('davon waren %d Zeichen in myCharTypes[5]', [myCharTypes[5].Counter]);
Label7.Caption := Format('davon waren %d Zeichen in myCharTypes[6]', [myCharTypes[6].Counter]);
end;
Stephan B.
|
|
Zitat
|