Урок 15. Задача №10. Решение.

Урок 15. Задача №10.

Напишите программу, которая будет заполнять массив из 10 элементов случайными числами из диапазона от 0 до 20, при этом в полученном массиве не должно быть одинаковых значений.

type
  IntArr = array[1..10] of integer;

function UniqArr(new_arr: IntArr): IntArr;
var i, j, max, randNumb: integer;
  UniqNumb: boolean;
begin
  randomize();
  max := 20;
  i := 1;
  while(i <= length(new_arr)) do
  begin
    UniqNumb := true;
    randNumb := random(max);
    for j := 1 to i do
    begin
      if(new_arr[j] = randNumb) then
      begin
        UniqNumb := false;
        break;
      end;
    end;
    if(UniqNumb = true) then
    begin
     new_arr[i] := randNumb;
     i += 1;
    end;
  end;
  result := new_arr;
end;

procedure ShowArray(arrUniq: IntArr);
var i: integer;
begin
  writeln('arr = ');
  for i := 1 to length(arrUniq) do
    write('|', arrUniq[i], '|', ' ');
  writeln();
end;

var arr: IntArr;
begin
  arr := UniqArr(arr);
  ShowArray(arr);

  readln(); // Удержание консоль
end.// Завершение программы 
vedro-compota's picture

arr := UniqArr(arr);

-- аргумент на вход не нужен.

_____________
матфак вгу и остальная классика =)

Firons's picture

type
  IntArr = array[1..10] of integer;

function UniqArr(): IntArr;
var i, j, max, randNumb: integer;
  new_arr: IntArr;
  UniqNumb: boolean;
begin
  randomize();
  max := 20;
  i := 1;
  while(i <= length(new_arr)) do
  begin
    UniqNumb := true;
    randNumb := random(max);
    for j := 1 to i do
    begin
      if(new_arr[j] = randNumb) then
      begin
        UniqNumb := false;
        break;
      end;
    end;
    if(UniqNumb = true) then
    begin
     new_arr[i] := randNumb;
     i += 1;
    end;
  end;
  result := new_arr;
end;

procedure ShowArray(arrUniq: IntArr);
var i: integer;
begin
  writeln('arr = ');
  for i := 1 to length(arrUniq) do
    write('|', arrUniq[i], '|', ' ');
  writeln();
end;

var arr: IntArr;
begin
  arr := UniqArr();
  ShowArray(arr);

  readln(); // Удержание консоль
end.// Завершение программы