Показать сообщение отдельно
  #3  
Старый 15.12.2015, 20:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А я бы делал по другому. Всего цифр может быть 10 (0..9). Соответсвенно, можно просто в массиве посчитать количество цифр. Типа бин-сорт.
Понимаю, что фигово объяснил, код, наверное будет понятнее:
Код:
function Proverka(n : Integer) : Boolean;
var
  A : Array [0..9] Of Integer;
  I : Integer;
begin
  For I := 0 To 9 Do A[i] := 0; // инициализируем массив

  // Теперь считаем цифры
  While n > 0 Do
    Begin
      A[n mod 10] := A[n mod 10] + 1;
      n := n div 10;
    End;

  for I := 0 To 9 Do
    begin
      Result := A[i] => 3; // поставить строгое равенство, если нужно только три повторения
      If Result Then Break; // если есть цифра 3 раза (или больше), то выходим
    end;
end;
Ответить с цитированием