Thema: Delphi Vokale Zählen

Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Vokale Zählen

  Alt 18. Jun 2006, 11: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.
  Mit Zitat antworten Zitat