Заполнение массива неповторяющимися значениями

Оригинал статьи: http://www.cyberforum.ru/pascal/thread133142.html
Благодарен всем авторам, которые внесли свой вклад в сборку кода.

 
type
  Tarr = array of integer;

procedure FillArray(var a: Tarr; n, r1, r2: integer);{a - массив;
                                                     n - длина массива;
                                                     r1, r2 - диапазоны рандома}
var
  i, j: integer;
  p: boolean;
begin
  randomize;
  setlength(a, n);
  if r2 - r1 < n then begin
    for i := 1 to n - 1 do a[i] := random(r2 - r1 + 1) + r1;
  end else begin
    a[0] := random(r2 - r1 + 1) + r1;
    p := false;
    for i := 1 to n - 1 do 
    begin
      repeat
        a[i] := random(r2 - r1 + 1) + r1;
        p := false;
        for j := 0 to i - 1 do 
        begin
          if a[j] = a[i] then p := true;
        end;
      until p = false;
    end;
  end;
end;

procedure WriteArray(a: Tarr);
var
  i: integer;
begin
  for i := 0 to length(a) - 1 do 
  begin
    write(a[i]:4);
  end;
  writeln;
end;

var
  MyArray: Tarr;

begin
  FillArray(MyArray, 10, 0, 10);
  WriteArray(MyArray);
  readln;
end.
  

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0 0 голос
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии