Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: Doppelte Werte in einem Array zählen...

  Alt 30. Okt 2004, 15:52
Stimmt, Integer ist ja 32bit

Aber @Meflin: Wie groß könnten denn die Werte max. werden? Weisst du das?
Weil dann könnte man Hagen's Methode "Count: Array[Byte] of Integer" etwas "erweitern", z.B. "Count: Array[0..10000] of Integer" könnte Werte zw. 0 und 10.000 erfassen. Dadurch kannst du dir nämlich das verschachtelte "Rumgeschleife" schenken.

Mit dem Problem, dass nur Werte gezählt werden sollen, die mehr als 1x in dem Array vorkommen: Könnte man das nicht so lösen, dass man nach dem Zähl-Durchlauf einfach prüft, welche Werte im Count-Array >= 1 sind und diese dann einfach um eins verringert?

Delphi-Quellcode:
var
  Count: Array[0..10000] of Integer;
  i: Integer;
begin
  // Alles im Count-Array auf 0 setzen
  FillChar (Count, Sizeof (Count), 0);

  // Count anhand des Wertes von Data[i] erhöhen
  for i := 0 to High (Data) do
    inc (Count[Data[i]]);

  // Generell eins abziehen, wenn Count[i] >= 1
  for i := 0 to High (Count) do
    if (Count[i] >= 1) then
      dec (Count[i]);
end;
Grüße,
Mario
  Mit Zitat antworten Zitat