Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Am meisten vorkommende Zahl

  Alt 29. Sep 2006, 07:24
Herzlich willkommen in der Delphi-PRAXiS, r00t.

Vielleicht habe ich dein Problem ja falsch verstanden, aber wenn jede Zeile das gleiche Muster repräsentiert und jede Stelle über einen voting process festgelegt werden soll, dann braucht es eine frequency table für jede Position der Zeichenkette. Ich könnte mir das dann so vorstellen:

Delphi-Quellcode:
program Muster;

{$APPTYPE CONSOLE}

uses
  Classes,
  SysUtils;

const
  NCHARS = 5;
  FILLER = '_';

type
  TFreq = array [Char] of Integer;
  TFreqList = array of TFreq;

var
  s: String;
  i: Integer;
  fl: TFreqList;

function MostFrequentChar(f: TFreq): Char;
var
  c: Char;
  iMax: Integer;
begin
  iMax := 0;
  for c := #0 to #255 do
    if (f[c] > iMax) and (c <> FILLER) then
    begin
      Result := c;
      iMax := f[c];
    end;
end;

begin
  AssignFile(input, ParamStr(1));
  Reset(input);

  SetLength(fl, NCHARS);

  while not Eof do
  begin
    ReadLn(s);
// Das geht auch eleganter - Danke Hagen.
// if Length(s) <> NCHARS then
// Continue
// else
    if Length(s) = NCHARS then
      for i := 1 to NCHARS do
        Inc(fl[Pred(i)][s[i]]);
  end;

  CloseFile(input);

  SetLength(s, NCHARS);
  for i := 1 to NCHARS do
    s[i] := MostFrequentChar(fl[Pred(i)]);
  WriteLn(s);
end.
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat