Задание 12 Урок 15

Задание 12 Урок 15

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

type arr = array[0..9] of integer;
var i,min,max : integer;
  first_array : arr;
label m1;
function check(f_array : arr;x : integer): boolean;
var z,first_number,second_number : integer;
begin
  first_number := f_array[x];{текущее значение}
    for z := low(f_array) to x do
      begin
        if z = x then{исключене сравнения значения самого с собой}
          continue;
        second_number := f_array[z];
        if first_number = second_number then {сравнение текущего значения
        со значением[z] массива}
          begin
            result := false;
            exit;
          end
        else
          result := true;
      end;
end;
begin
  min := 0;
  max := 20;
  i := 0;
  randomize;
  while (i <= high(first_array)) do{позволяет проверить каждое инициализирован-
  ое значение, не заполняя массив}
    begin
      m1 :
      first_array[i] :=  min + random(max - min + 1);
      if i = 0 then{условие инициализации значения[0] без проверки - не с чем
      сравнивать/ Значение функции без этой проверки будет false - выполнение
      программы уйдет в бесконечный цикл}
        begin
          i += 1;
          goto m1;
        end;
      if (check(first_array,i) = true) then{проверка для увелечения счетчика,
      соответственно и для инициализации следующего значения}
        i += 1
      else
        goto m1;
    end;
  for i := low(first_array) to high(first_array) do{вывод массива в консоль}
    write('|', first_array[i], '|');
  readln();
end.
vedro-compota's picture

  1. просьба оформить решение в виде функции
  2. Выражение типа:
    if (check(first_array,i) = true)

    избыточно, т.к. это то же самое, что:

    if (check(first_array,i))
    

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