Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - function HaeufigstesZeichen ermitteln ???


red-7-seven - Fr 24.01.03 14:46
Titel: function HaeufigstesZeichen ermitteln ???
Hi !
Ich habe eine Funktion geschrieben, die die Häufigkeiten der verschiedenen Zeichen in einem String ermittelt und als Funktionsergebnis liefert.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
type TBuchstabe='a'..'d';
       THaeufigkeiten= array [TBuchstabe] of byte;


function h(text:string):THaeufigkeiten;
var i:TBuchstabe;
    j,k:byte;
    temp:THaeufigkeiten;
begin
  for i:=low(TBuchstabe) to high(TBuchstabe)do
  Temp[i]:=0;

  for i:=low(TBuchstabe) to high(TBuchstabe)do
   for j:=1 to length(text) do
    if (text[j]=i) then
     inc(temp[i]);
     h:=temp;
end;

Nun zu meinem Problem...
Schreiben sie eine Funktion, die aus der obigen Daten das häufigst vorkommende Zeichen ermittelt und als Funktionsresultat liefern. Bei gleicher Häufigkeit von Zeichen ist das mit dem kleineren Ordinalwert zu liefern.

Kann mir da jemand helfen?

*vielen Dank im voraus*

MfG
red-7-seven

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Christian S. - Fr 24.01.03 15:43


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
VAR myarray : THaeufigkeiten;
       i, max : TBuchstabe;
begin
  myarray:=h(my_tect);
  max:='a';
  for i:=Low(myarray) To High(myarray) do
  if myarray[i] > myarray[max] then max:=i;
  result:=max;
end;


Das sollte eigentlich das sein, was Du brauchst. Da ich ein "echtes" Größerzeichen verwende, sollte bei gleicher Häufigkeit der "kleinere" Buchstabe zurückgeliefert werden.

MfG,
Peter

P.S.: Hoffe, es stimmt so. Irgendwie produziere ich heute nur Stuss. :wink:


red-7-seven - Fr 24.01.03 16:41
Titel: Danke!
Ganz lieben Dank!
irgendwie gar nich schwer - aber ich wär nich drauf gekommen! *danke*
MfG
red-7-seven