Thema: Delphi Vokale Zählen

Einzelnen Beitrag anzeigen

TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#33

Re: Vokale Zählen

  Alt 18. Jun 2006, 12:42
Noch ein Tip:

Es ist sinnvoll solche Aufgaben auf mehrere Prozeduren und auch Funktionen zu verteilen. Denn dann ist der Code viel übersichtlicher, du kannst eine einmal programmierte Prozedur oder Funktion immer wieder verwenden und Fehler sind leichter auszumerzen.

Dazu ein Beispiel:

Diese Prozedur gibt zu jedem ihr übergebenen Satz die Anzahl von Konsonanten und Vokalen zurück:

Delphi-Quellcode:
procedure ZaehleVokUndKons(pSatz: String; var pnVok, pnKons: Integer);
var i:integer;
begin
    pnVok := 0;
    pnKons := 0;
    for i:=1 to length(pSatz) do
      begin
        if (pSatz[i] in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']) then
            inc(pnVok)
        else if (pSatz[i] in ['a'..'z', 'A'..'Z']) then
            inc(pnKons);
      end;
end;
In deinem Projekt könntest du diese jetzt beliebig oft aufrufen, ohne alles nochmal tippen zu müssen. Aufgerufen würde sie beispielsweise so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var nVok,
    nKons: integer;
begin
  ZaehleVokUndKons(edit1.text, nVok, nKons);
  edit2.text := inttostr(nVok);
  edit3.text := inttostr(nKons)
end;
Noch besser wäre aber auch die Überprüfung, ob es sich bei einem Buchstaben um Vokale oder Konsonanten handelt auch "auszulagern", dazu bieten sich Funktionen an. Dann sähre das ganze so aus:


Delphi-Quellcode:
function istVokal(pChar: Char): Boolean;
begin
  if pChar in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] then result := true
    else result := false;
end;

function istKonsonant(pChar: Char): Boolean;
begin
  if (pChar in ['a'..'z', 'A'..'Z']) and (not isVowel(pChar)) then result := true
    else result := false;
end;

procedure ZaehleVokUndKons(pSatz: String; var pnVok, pnKons: Integer);
var i:integer;
begin
    pnVok := 0;
    pnKons := 0;
    for i:=1 to length(pSatz) do
      begin
        if istVokal(pSatz[i] )then
            inc(pnVok)
        else if istKonsonant(pSatz[i]) then
            inc(pnKons);
      end;
end;
Der Aufruf ist der selbe, wie oben.

Mir hat sowas früher im sehr geholfen, da ich mich selber auch verbessern wollte. Wenn es dich weniger interessiert dann überseh den Beitrag einfach.

Edit: Verwirrenden Bezeichner "Konst" in "Kons" geändert.
  Mit Zitat antworten Zitat