Thema: Delphi Bereinigen des Records

Einzelnen Beitrag anzeigen

phobosx112

Registriert seit: 20. Jan 2006
5 Beiträge
 
#7

Re: Bereinigen des Records

  Alt 20. Jan 2006, 12:02
Delphi-Quellcode:
type
    tdatensatz = record
                 zeichen:char;
                 anzahl:integer;
                 haeufig:real;
                 end;
const
     maxzahl = 40;
var
   datensatz: array[1..maxzahl] of tdatensatz;
   zahl: integer;
   satz: string;


procedure TForm1.Button1Click(Sender: TObject);
var laenge,a,c,d,g,e:integer;
    b,f:char;
    h:real;
begin
satz:=edit1.text;
memo.Clear;
laenge:=length(satz);
a:=0; //wir sind beim a-ten zeichen
memo.lines.add('Gesamtlänge: ' + inttostr(laenge));

while a<laenge do
      begin
      a:=a+1;
      b:=satz[a]; //b ist das aktuelle zeichen
      c:=laenge; // einfacher
      d:=0;
      e:=zahl;
      while c>0 do
            begin
            if b=datensatz[e].zeichen then
               begin
               datensatz[e].anzahl:=datensatz[e].anzahl+1;
               c:=0;
               d:=1; // d gibt an ob der buchstabe schon zugeordnet wurde
               end
            else
                begin
                c:=c-1; //c geht alle buchstaben durch
                e:=e-1; // e ist hier der zähler um alle datensätze abzuklappern
                end;
            end;
      if d=0 then
         begin
         zahl:=zahl+1;
         datensatz[zahl].zeichen:=b;
         datensatz[zahl].anzahl:=1
         end;

      end;
e:=0; //hier ist e der zähler um alle datensätze auszugeben
memo.lines.add('Zeichen Anzahl Häufigkeit');
while e<zahl do
      begin
      e:=e+1;
      f:=datensatz[e].zeichen;
      g:=datensatz[e].anzahl;
      h:=(g/laenge);
      memo.lines.add(f + ' ' + inttostr(g) + ' ' + floattostr(h))
      end;
end;
  Mit Zitat antworten Zitat