Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: gleiche Zahlenfolgen im Array untersuchen

  Alt 5. Okt 2011, 15:08
Achso. Dann muss meine obige Lösung dahingehend angepasst werden, das z.B. alle Ketten, die nur aus einem Element bestehen nachher gelöscht werden, sowie auch alle Ketten mit mehr als einem Element, die aber nur einmal vorkommen.

Alternativ kann man natürlich direkt j erst bei 1 anfangen lassen und erst wenn Vorkommenzahl(Kette)>1 ist die Kette in die Liste aufnehmen. Mach das mal:

Delphi-Quellcode:
var:
  i, j, k, l, temp :Integer;
  Tiefe : Integer;
  Kette : String
  Kettenliste:TStringlist;
  Anzahlliste:TStringlist;
function InListe(const KT : String):Boolean;
begin
  Result:=false;
  For l = 0 To Kettenliste.Count-1 do
    if Kettenliste[l]=Kette then Result:=true;
end
function Vorkommenszahl(const KT : String):Integer;
begin
  //Die Funktion ist mir aus dem Kopf zu kompliziert:
  //Kette in Elemente zerlegen, Anz. Elemente bestimmen
  //Elemente in DynArray speichern
  //Das "Hauptarray" Array durchgehen und in Schleifen mit den Elementen von DynArray vergleichen
  //Wenn passende Kette gefunden wird einen Counter hochgezählt
end
begin
Tiefe:=5;
Kettenliste:=TStringlist.Create(nil);
Anzahlliste:=TStringlist.Create(nil);
For i:=0 To Array.Count-1 do
  begin
  For j:=1 To Tiefe-1 do
    begin
    Kette:='';
    For k = 0 to j do
      Kette:=Kette+IntToStr(Array[i+k])+';';
    if not InListe(Kette) then
      begin
      temp:=Vorkommenzahl(Kette);
      if temp>1 then
        begin
        Kettenliste.Add(Kette);
        Anzahlliste.Add(IntToStr(temp))
        end;
      end;
    end;
  end;
end;
Ralph

Geändert von Jumpy ( 5. Okt 2011 um 15:11 Uhr)
  Mit Zitat antworten Zitat